Podman(POD MANager)是一個用於管理容器和映像、安裝到這些容器中的磁碟區以及由容器組組成的 Pod 的工具。 Podman 在 Linux 上運行容器,但也可以使用 Podman 管理的虛擬機器在 Mac 和 Windows 系統上使用。 Podman 基於 libpod,這是一個用於容器生命週期管理的函式庫,也包含在該儲存庫中。 libpod 函式庫提供用於管理容器、pod、容器映像和磁碟區的 API。
Podman 每年發布 4 次新的主要或次要版本,分別在二月、五月、八月和十一月的第二週。補丁發布更加頻繁,並且可能隨時發生,以便為用戶提供錯誤修復。所有版本均經過 PGP 簽署。獲準發布的團隊成員的公鑰位於此處。
持續集成:
戈文檔:
下載
從較高層次來看,Podman 和 libpod 的範圍如下:
支援多種容器映像格式,包括 OCI 和 Docker 映像。
對這些映像的全面管理,包括從各種來源提取(包括信任和驗證)、建立(透過 Containerfile 或 Dockerfile 建置或從容器提交)以及推送到註冊表和其他儲存後端。
容器生命週期的全面管理,包括建立(從映像和分解的根檔案系統)、運行、檢查點和復原(透過 CRIU)以及刪除。
使用 Netavark 全面管理容器網路。
支援 Pod、共享資源並共同管理的容器群組。
支援在沒有 root 或其他提升權限的情況下運行容器和 Pod。
容器和 Pod 的資源隔離。
支援與 Docker 相容的 CLI 介面,可以在本機和遠端系統上運行容器。
無管理器守護程序,可提高安全性並降低空閒時的資源使用率。
支援 REST API,提供與 Docker 相容的介面和公開高級 Podman 功能的改進介面。
支援透過podman machine
運行的虛擬機器在Windows和Mac上運行。
對podman machine
進行進一步改進,以更好地支援 Podman Desktop 和其他開發人員用例。
支援 conmon-rs,這將改進容器日誌記錄。
支援 BuildKit API。
性能和穩定性改進。
減少 Podman 二進位檔案的大小。
如果您認為您已發現專案中的安全問題,請不要透過 GitHub 問題追蹤器、郵件清單或 IRC 公開報告該問題。相反,請將包含盡可能多的詳細資訊的電子郵件發送至[email protected]
。這是核心維護者的私人郵件清單。
對於一般問題和討論,請使用 Podman 的頻道。
有關問題/錯誤和功能的討論,您可以使用 GitHub 問題和 PR 追蹤系統。
在lists.podman.io
上也有一個郵件清單。您可以透過向[email protected]
發送主題為subscribe
訊息來訂閱。
Podman 可以輕鬆地作為普通用戶運行,無需 setuid 二進位。當沒有 root 運行時,Podman 容器使用使用者命名空間將容器中的 root 設定為執行 Podman 的使用者。 Rootless Podman 運行鎖定的容器,不具有執行容器的使用者所沒有的權限。其中一些限制可以解除(例如,透過--privileged
),但無根容器永遠不會擁有比啟動它們的使用者更多的權限。如果您以您的使用者身分執行 Podman 並從主機掛載到/etc/passwd
中,您仍然無法變更它,因為您的使用者沒有這樣做的權限。
幾乎所有正常的 Podman 功能都可用,但也有一些缺點。任何最新的 Podman 版本都應該能夠無根運行,無需任何額外的配置,儘管您的作業系統可能需要安裝指南中詳細介紹的一些額外配置。
在使用無根 Podman 之前,管理員需要進行一些配置,必要的設定記錄在此。
Podman Desktop 為 Linux、Windows 和 Mac 機器上的 Podman 和 Kubernetes 提供本機開發環境。它是 Podman 的全功能桌面 UI 前端,它使用非 Linux 作業系統上的podman machine
後端來運行容器。它支援完整的容器生命週期管理(建置、拉取和推送映像、建立和管理容器、建立和管理 Pod 以及使用 Kubernetes YAML)。該專案在 GitHub 上開發,歡迎貢獻。
專門簽署映像並將其推送到各種儲存後端。有關這些任務,請參閱 Skopeo。
支援用於容器管理的 Kubernetes CRI 介面。 CRI-O 守護程式專門從事此工作。
Podman 在不同方面使用 OCI 專案和最佳庫:
執行時間:我們使用 OCI 執行時間工具產生 OCI 執行時間配置,這些配置可與任何符合 OCI 的執行時間(例如 crun 和 runc)一起使用。
映像:映像管理使用容器/映像庫。
儲存:容器和鏡像儲存由容器/儲存管理。
網路:透過使用 Netavark 和 Aardvark 提供網路支援。 無根網路透過 Pasta 或 slirp4netns 處理。
構建:透過 Buildah 支持構建。
Conmon:Conmon 是一個用於監控 OCI 運行時的工具,Podman 和 CRI-O 都會使用。
Seccomp:Podman、Buildah 和 CRI-O 的統一 Seccomp 策略。
如需部落格、發佈公告等,請造訪 podman.io 網站!
安裝說明有關如何在您的環境中安裝 Podman 的資訊。
OCI Hooks 支援有關 Podman 如何設定 OCI Hooks 在啟動容器時運作的資訊。
Podman API有關 Podman REST API 的文檔。
Podman 命令Podman 命令的列表,其中包含其手冊頁的鏈接,在許多情況下還包含顯示正在使用的命令的視頻。
Podman 容器鏡像有關 quay.io 上的 Podman 容器鏡像的資訊。
Podman 故障排除指南Podman 的常見問題和解決方案清單。
Podman 使用轉移對於操作和開發轉移有用的信息,因為它與使用 Podman 的基礎設施相關。 此頁麵包含顯示 Docker 命令及其 Podman 等效命令的表格。
教程有關使用 Podman 的教程。
遠端客戶端有關使用 Podman 遠端客戶端的簡要操作方法。
Rootless 環境中 Podman 的基本設定和使用本教學展示了運行 Rootless Podman 所需的設定和配置。
發行說明最新 Podman 版本的發行說明。
貢獻有關為本項目做出貢獻的資訊。
Buildah 和 Podman 是兩個互補的開源項目,可在大多數 Linux 平台上使用,這兩個項目都位於 GitHub.com,此處為 Buildah,此處為 Podman。 Buildah 和 Podman 都是適用於開放容器計畫 (OCI) 映像和容器的命令列工具。 這兩個項目的專業性有所不同。
Buildah 專門建造 OCI 鏡像。 Buildah 的指令複製 Dockerfile 中的所有指令。 這允許使用或不使用 Dockerfile 建置映像,同時不需要任何 root 權限。 Buildah 的最終目標是提供一個較低層級的 coreutils 介面來建構鏡像。 無需 Dockerfile 建置映像的靈活性允許將其他腳本語言整合到建置過程中。 Buildah 遵循簡單的 fork-exec 模型,並非以守護程式執行,但它是基於 golang 中的綜合 API,可以供應到其他工具。
Podman 專注於協助您維護和修改 OCI 映像的所有命令和功能,例如拉取和標記。 它還允許您創建、運行和維護從這些映像創建的容器。 為了透過 Dockerfile 建立容器映像,Podman 使用 Buildah 的 golang API,並且可以獨立於 Buildah 安裝。
Podman 和 Buildah 之間的主要區別在於它們的容器概念。 Podman 允許用戶創建“傳統容器”,這些容器的目的是長期存在。 雖然 Buildah 容器實際上只是為了允許將內容添加回容器映像而創建的。 一個簡單的思考方法是buildah run
指令模擬 Dockerfile 中的 RUN 指令,而podman run
指令在功能上模擬docker run
指令。 由於這一點及其底層儲存差異,您無法從 Buildah 中看到 Podman 容器,反之亦然。
簡而言之,Buildah 是建立 OCI 映像的有效方法,而 Podman 可讓您使用熟悉的容器 cli 指令在生產環境中管理和維護這些映像和容器。 有關更多詳細信息,請參閱容器工具指南。
$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob a6b3126f3807 done Copying config 25c667d086 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - / (O) (O) ~~~| -=(,Y,)=- | .---. /` |~~ ~/ o o ~~~~.----. ~~ | =(X)= |~ / (O (O) ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io