iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
DevOps

一步步學DevOps:30天入門計劃系列 第 30

Day30 容器化工具Podman 介紹

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20231015/20139800obYsAq58Hd.jpg

Podman 是一個開源容器工具,可以在多個平台上使用。它的跨平台性可以在不同環境中進行容器管理和執行。

以下是一些主要支持 Podman 的平台:

  • Linux: Podman 最初是為 Linux 開發的,因此在 Linux 環境中的支持最好。它在許多主要的 Linux 發行版上運行,包括 CentOS、Fedora、Red Hat Enterprise Linux(RHEL)、Ubuntu 等。

  • macOS: 可以在 macOS 上運行 Podman,但通常需要使用額外的軟件,如 Podman for macOS 或者 Homebrew 安裝。

  • Windows:可以在 Windows 的 WSL 中使用 Podman。

Docker 和 Podman都是容器化技術的工具,以下是它們之間的一些主要區別:

  • Docker
    Docker使用守護程序Docker Daemon管理容器,因此通常需要 root 或 sudo 權限來運行。
    Docker 擁有廣大的生態系統,因此更容易找到現成的映像和工具,Docker Hub 是一個公共容器映像庫,用戶可以從中下載現成的映像。另外Docker Compose 是 Docker 的附加工具,用於定義和管理多個容器應用的多容器環境。

  • Podman
    Podman是由 Red Hat 開發的開源容器工具,用於管理容器生命週期。
    在安全性方面不同於 Docker,Podman 不需要守護程序,它使用獨立的進程來運行容器,因此無需 root 權限,因為不需要 root 權限,所以減少了潛在的攻擊,在安全性方面通常被認為更優越。Podman 也支持 Docker Compose 文件,因此您可以使用 Docker Compose。

安裝podman

如果您使用的是 Fedora、CentOS 或其他基於 Red Hat 的 Linux 發行版,通常會使用 dnf 包管理器來安裝軟體。下面是如何使用 dnf 安裝 Podman 的步驟:

1.首先確認 dnf 套件管理器已經更新,安裝的是最新版本的軟體。

sudo dnf update
  1. 安裝 Podman和 podman-plugins和runc:
    podman-plugins是用於提供額外的功能和集成,例如 podman-compose 插件,它支援 Docker Compose 檔案。runc:runc容器運行時被 Podman 使用以實際執行容器。
 sudo dnf install -y podman podman-plugins runc
  1. 驗證安裝,顯示 Podman 的版本信息代表已經成功安裝:
podman --version

Podman 常用指令的介紹:

  • podman run:用於建立啟動容器的主要指令,指定容器映像image、選項和命令。例如,下面的指令運行一個名為 "mycontainer" 的容器,使用交互模式(-i)和終端(-t):
podman run -it --name mycontainer ubuntu bash

常用的 podman run 參數說明:

-i, --interactive: 啟用交互模式,在容器中進行交互式操作,例如鍵入命令。

-t, --tty: 分配一個虛擬終端(TTY),以交互方式使用容器,通常與 -i 一起使用。

--name: 為容器指定一個名稱,以便在操作中使用它,而不必使用容器的 ID。

-d, --detach: 將容器放在後台運行,並立即返回命令行提示符。這對於在容器中運行守護進程很有用。

--rm: 在容器退出時自動刪除容器,這對於一次性操作非常有用。

-v, --volume: 當容器生命週期結束,容器內之資料數據也會跟著消失,volume可將容器內部的路徑儲存到主機的文件系統路徑以保存資料數據。例如:-v /host/path:/container/path。

-p, --publish: 指定端口映射,將容器內部的端口映射到主機上。例如,-p 8080:80 將容器的端口 80 映射到主機的端口 8080。

 --network: 指定容器所屬的網絡,可以指定現有網絡或創建新的網絡。

-e, --env: 設置環境變數,允許您傳遞環境變數給容器。例如,-e MY_VARIABLE=123
  • podman ps: 顯示正在運行的容器列表,以及有關它們的一些基本信息,如容器 ID、狀態、端口映射等。
podman ps
  • podman ps -a:podman ps 命令用於列出正在運行的容器,而 podman ps -a 則是列出所有容器(包括已停止的容器)的命令。"-a" 選項代表 "all",它將顯示所有容器的詳細信息,而不僅僅是運行中的容器。還會列出容器的各種信息,包括容器ID、容器名稱、狀態、建立時間、運行時間等。
podman ps -a
  • podman images: 列出本地存儲的容器映像,列出系統中已經下載或創建的容器映像。
podman images
  • podman rmi :用於刪除容器映像,清理系統中不再需要的容器映像,需要指定要刪除的映像的名稱或ID作為參數。必須在刪除映像之前確認`沒有正在運行的容器在使用該映像,否則將無法刪除映像。
podman rmi my_image
刪除名為 "my_image" 的容器映像。
  • podman pull: 從容器映像存儲庫(DockerHub)下載image。可以下載特定版本的容器映像。例如下載 Ubuntu 的最新版本:
podman pull ubuntu:latest
  • podman build: 基於 Dockerfile 創建自定義容器映像。這個指令可用於創建自定義容器映像,但需要先建立 Dockerfile 文件。
    `
podman build -t myapp:latest .
  • podman exec: 在運行的容器中執行命令並進入容器中,例如打開新的 shell 會話。
podman exec -it container_id /bin/bash
  • podman stop: 停止運行中的容器。要刪除容器之前需先停止正在運行的容器。
podman stop container_id
  • podman rm: 刪除不再需要的容器。
podman rm container_id

這些是一些常見的 Podman 指令,可以使用 podman --help 或 man podman 來查看更多的Podman 的文檔和指南,提供更多的其他功能和選項等使用方法。


上一篇
Day29實作簡單的GitHub Action workflow範例
系列文
一步步學DevOps:30天入門計劃30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言