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