本篇作為書籤用途,記錄網路上的 podman 相關資訊
安裝
1 | # 使用 winget 搜尋 Podman 的安裝 ID |
常用指令
| 功能 | 指令範例 | 說明 |
|---|---|---|
| 查看本地映像檔 | podman images |
顯示已下載的映像檔 |
| 執行容器 | podman run -it --rm alpine sh |
執行 Alpine 容器並進入 shell |
| 後台執行容器 | podman run -d -p 8080:80 nginx |
背景執行 nginx 並對外開放 8080 |
| 查看容器列表 | podman ps -a |
顯示所有容器(包含已停止) |
| 停止容器 | podman stop <容器ID或名稱> |
停止指定容器 |
| 刪除容器 | podman rm <容器ID或名稱> |
刪除指定容器 |
| 刪除映像檔 | podman rmi <映像ID或名稱> |
刪除指定映像檔 |
| 查看容器日誌 | podman logs <容器ID或名稱> |
顯示容器輸出 |
| 進入容器 | podman exec -it <容器ID或名稱> bash |
進入容器執行 bash |
| 建立映像檔 | podman build -t my-image . |
使用 Containerfile 建立映像檔 |
| 查看網路設定 | podman network ls |
列出 Podman 網路 |
| 建立自訂網路 | podman network create my-net |
建立自訂橋接網路 |
| 執行 rootless 容器 | podman run -it alpine sh |
非 root 使用者執行容器 |
📌 建議:搭配
--rm可在容器結束後自動清除,適合測試用途;搭配-v可掛載資料夾。
使用 Containerfile 建立映像檔
Podman 支援使用 Containerfile 或 Dockerfile 建構鏡像。
範例:建立一個簡單的 Nginx 映像檔
1 | FROM nginx:alpine |
目錄結構:
1 | my-nginx/ |
建立映像檔:
1 | cd my-nginx |
執行映像檔:
1 | podman run -d -p 8080:80 my-nginx |
接著可用瀏覽器開啟 http://localhost:8080 查看效果。
Podman vs Docker
| 項目 | Podman | Docker |
|---|---|---|
| 架構 | 無守護程序(Daemonless),每個容器獨立執行 | 有守護程序(Daemon),透過 dockerd 管理所有容器 |
| 權限模式 | 支援 Rootless 模式,可在非 root 使用者下執行容器,提升安全性 | 預設需 root 權限,雖然支援 rootless,但設定較複雜 |
| OCI 相容性 | 完全支援 OCI 標準,可執行 Docker 映像檔與 CLI 指令 | 同樣支援 OCI 標準,是最早推動該標準的工具之一 |
| 系統整合 | 可與 systemd 整合,將容器當作 Linux 服務管理 | 主要透過 Docker Compose 或 Swarm 進行編排與管理 |
| 遠端管理能力 | 原生不支援遠端 API,但可透過 Podman REST API 或 SSH 管理 | 內建 REST API,支援遠端 CLI 操作與第三方工具整合 |
| 容器啟動速度 | 無需守護程序,某些情境下啟動速度更快 | 守護程序需啟動並維持連線,可能影響啟動效率 |
| 使用情境 | 適合單機開發、系統整合、強調安全性的環境 | 適合多節點部署、CI/CD、雲端平台整合的場景 |
| 社群與生態系 | 社群活躍,Red Hat 與 Fedora 積極推廣 | 生態系成熟,擁有大量教學資源與第三方工具支援 |
📌 建議選用:
- 若你偏好無守護程序、rootless 安全性、與 Linux 系統整合,Podman 是理想選擇。
- 若你需要成熟生態系、遠端管理、或多節點容器編排,Docker 更為合適。
參考資料: