# Podman 全面介紹:優缺點、Windows/Linux 安裝與環境設定

7 min read
Table of Contents

Podman 全面介紹:優缺點、Windows/Linux 安裝與環境設定

前言

容器技術已成為現代軟體開發不可或缺的一環。Docker 長期以來是容器領域的主流,但 Podman 作為新興的替代方案,憑藉其無守護進程(daemonless)、無 root 權限運行等特性,逐漸受到開發者青睞。本文將深入介紹 Podman 的特色、優缺點,並詳細說明在 Windows 與 Linux 上的安裝與環境設定步驟,協助你快速上手 Podman。


什麼是 Podman?

Podman(Pod Manager)是一個開源容器管理工具,支援 OCI(Open Container Initiative)標準。它能夠管理容器、容器映像檔、Pod(容器組合)等,並且與 Docker CLI 高度相容,許多 Docker 指令可以直接替換為 Podman 使用。

Podman 最大的特色在於「無守護進程」設計,容器運行不依賴後台 daemon,並且支援 rootless 運行,提升安全性。


Podman 的優點

1. 無守護進程(Daemonless)

Podman 不需要像 Docker 一樣有一個持續運行的守護進程。每個 Podman 命令都是獨立的進程,這意味著資源利用率更高,且不會因守護進程崩潰導致所有容器停止。

2. 支援 Rootless 運行

Podman 可以在非 root 權限下運行容器,降低安全風險。這對多使用者環境尤其重要,能防止惡意程式取得系統最高權限。

3. 與 Docker CLI 相容

Podman 的命令行介面設計與 Docker 幾乎一致,許多 Docker 指令只需將 docker 替換為 podman 即可。這讓 Docker 使用者能無痛遷移。

4. 支援 Pod 概念

Podman 原生支援 Pod(容器組合),可將多個容器組合在同一網路命名空間下,方便微服務架構部署。

5. 開源且社群活躍

Podman 由 Red Hat 主導開發,社群活躍,持續推出新功能與修復安全漏洞。


Podman 的缺點

1. Windows 支援有限

Podman 原生設計給 Linux,雖然有 Windows 版本,但需依賴 WSL2(Windows Subsystem for Linux),安裝與設定較複雜。

2. 生態系統較小

相較於 Docker,Podman 的生態系統(如 GUI 工具、第三方插件)較小,部分進階功能需自行實作。

3. 容器網路設定較複雜

Podman 的網路設定彈性高,但對新手來說較難上手,尤其是 rootless 模式下的網路配置。

4. 不支援 Docker Compose(原生)

Podman 不直接支援 Docker Compose,但可透過 podman-compose 或其他工具間接實現。


Windows 安裝 Podman 步驟

1. 安裝 WSL2

Podman 需在 WSL2 環境下運行。

  1. 開啟 PowerShell(以管理員身份)。

  2. 執行以下指令安裝 WSL2:

    Terminal window
    wsl --install
  3. 重新啟動電腦。

2. 安裝 Linux 發行版(如 Ubuntu)

  1. 在 Microsoft Store 搜尋並安裝 Ubuntu。
  2. 啟動 Ubuntu,設定使用者名稱與密碼。

3. 在 WSL2 安裝 Podman

  1. 更新套件庫:

    Terminal window
    sudo apt update
  2. 安裝 Podman:

    Terminal window
    sudo apt install podman -y
  3. 驗證安裝:

    Terminal window
    podman --version

4. 設定 rootless 模式

  1. 建立 Podman 設定檔:

    Terminal window
    mkdir -p ~/.config/containers
  2. 可選:設定 registries.conf 以自訂映像來源。

5. Windows 與 WSL2 整合

可透過 Windows Terminal 或 VSCode Remote WSL 直接操作 Podman。


Linux 安裝 Podman 步驟

Podman 支援多種 Linux 發行版,以下以 Ubuntu 為例:

1. 更新套件庫

Terminal window
sudo apt update

2. 安裝 Podman

Terminal window
sudo apt install podman -y

3. 驗證安裝

Terminal window
podman --version

4. 設定 rootless 模式

Podman 預設支援 rootless,直接以一般使用者執行即可。

5. 設定 registries.conf

可編輯 ~/.config/containers/registries.conf 來自訂映像來源。


基本環境設定

1. 設定映像來源(registries.conf)

編輯 ~/.config/containers/registries.conf

[registries.search]
registries = ['docker.io', 'quay.io']

2. 設定容器儲存路徑

Podman 預設儲存於 /var/lib/containers/storage(root)或 ~/.local/share/containers/storage(rootless)。

3. 設定網路

Podman 使用 CNI 網路插件,預設建立 bridge 網路。可自訂 /etc/cni/net.d/ 下的設定檔。

4. 設定 Podman Compose

安裝 podman-compose:

Terminal window
pip3 install podman-compose

Podman 基本指令範例

1. 拉取映像檔

Terminal window
podman pull nginx

2. 執行容器

Terminal window
podman run -d --name web nginx

3. 查看容器狀態

Terminal window
podman ps

4. 停止容器

Terminal window
podman stop web

5. 建立 Pod

Terminal window
podman pod create --name mypod
podman run -d --pod mypod nginx

Podman 與 Docker 指令對照

Docker 指令Podman 指令
docker pull nginxpodman pull nginx
docker run nginxpodman run nginx
docker pspodman ps
docker stop webpodman stop web
docker rm webpodman rm web

進階設定與應用

1. 建立自訂映像檔

Podman 支援 Dockerfile:

Terminal window
podman build -t myimage .

2. 匿名卷與資料持久化

Terminal window
podman run -v /host/data:/container/data nginx

3. 設定 rootless 網路

如遇 rootless 網路問題,可安裝 slirp4netns:

Terminal window
sudo apt install slirp4netns

常見問題與解決方式

1. 容器無法連網

  • 檢查 CNI 網路設定。
  • rootless 模式下安裝 slirp4netns。

2. 權限問題

  • 確認使用者已加入必要群組(如 subuidsubgid)。

3. Windows 下啟動失敗

  • 確認 WSL2 已正確安裝,且 Linux 發行版已更新。

結語

Podman 以其安全性、無守護進程設計、與 Docker 高度相容等優勢,成為容器管理的新選擇。雖然在 Windows 支援與生態系統上仍有成長空間,但對於追求安全、彈性與現代化容器管理的開發者來說,Podman 值得深入學習與應用。希望本文能協助你順利安裝、設定並開始使用 Podman,開啟容器技術的新篇章。


參考資源

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts

Comments