Podman 介绍

概述

Podman(全称 Pod Manager)是一款开源工具,用于开发、管理和运行容器。它由红帽工程师和开源社区共同开发,使用 libpod 库管理整个容器生态系统。Podman 采用无守护进程(daemonless)的架构,强调安全优先,是一个易用又安全的容器管理选择。

Podman 的生态包含 Buildah、Skopeo 等配套工具,支持高度定制化的容器环境。此外开发者可使用 Podman Desktop——一个跨 Linux、Windows 和 macOS 的图形界面工具,在本地无缝管理容器资源。

用户可以在各种 Linux® 发行版上运行 Podman,例如 Red Hat Enterprise Linux、Fedora、CentOS 与 Ubuntu等等。

Pod 与容器集

Pod 是一组共享资源同时运行的容器,类似于 Kubernetes 中的 Pod。Podman 通过其命令行接口(CLI)和 libpod 库来管理 Pod、容器、镜像与卷等,支持 Open Container Initiative(OCI)标准的容器格式。 每个 Pod 包含一个基础 infra 容器(用于保持 Pod 运行并管理用户命名空间),以及多个普通容器,并且各容器具有自己的监控机制。

为什么 Podman 与众不同?

  1.  无守护进程架构  
       Podman 不依赖具有根权限的后台 daemon 运行容器,因此不存在单点失败,也降低了潜在安全风险。用户可以无需 root 权限运行容器,从而降低系统攻击面。  

  2.  无根容器支持  
       在“rootless”模式下,普通用户即可创建、运行和管理容器,无需管理员权限,整体环境更安全、访问更简单。Podman 使用 SELinux 安全标签增强隔离与控制。  
       redhat.com

  3.  灵活的 systemd 集成  
       Podman 能生成 systemd 单元文件,并借助 systemd 在后台管理容器生命周期,支持容器的自动启动与更新回滚机制。  
     

  4.  RESTful API 支持  
       Podman 可部署 RESTful API 服务,允许通过 cURL、Postman 等工具进行远程容器管理。  

Podman 相关工具生态  

  • Buildah:专注于构建镜像工具,可从基础镜像开始,也可根据 Dockerfile 或 Containerfile 构建,生成适用于多种容器引擎的镜像。  

  • Skopeo:用于在不同仓库或存储之间移动、复制和检查镜像,例如 docker.io 与 quay.io 等。  

三者协作模式类似一把多功能瑞士军刀:Podman 管理运行、Buildah 构建镜像、Skopeo 负责镜像移动与检查。  

Podman 与 Docker 的对比  

  • 命令兼容性  
    Podman CLI 与 Docker 命令高度兼容,很多 Docker 用户可快速迁移。也支持设置 alias 将 docker 命令映射为 podman,或使用 podman-docker 包直接替代 docker 命令。  

  • 架构差异  
    Docker 依赖 daemon,而 Podman 是无守护进程的,这使得 Podman 在安全性和资源控制上更具优势。且 Podman 本身早期即支持 rootless 模式。  

  • 组合自由  
    你可以只使用 Buildah 构建镜像,再用 Podman 运行,也可以完全切换到 Podman 生态,无需 Docker。  

Podman Desktop  

Podman Desktop 是一个开源的 GUI 工具,帮助开发者在本地管理容器与 Kubernetes Pod,并与 Red Hat 的容器技术如 OpenShift、RHEL 无缝集成。  

它可安装在 Linux、macOS、Windows 平台,支持构建、拉取、推送镜像以及管理容器资源。此外通过插件可使用 OpenShift 本地集群、Red Hat SSO、Bootc 等扩展功能。

总结与技术亮点

  • 完整生命周期管理:Podman 可拉取镜像、创建与运行容器、联网、检查与停止容器。

  • 资源隔离与 Pod 支持:支持 rootless 容器与 Pod 集群运行与资源隔离。

  • CLI 与 Docker 兼容:熟悉 Docker 的用户可以无缝上手 Podman。

  • 无守护进程、安全性高:杜绝 daemon 权限风险,节省系统资源。

  • REST API 和 CRIU 支持:支持远程管理接口与 checkpoint/restore 能力。

  • 自动更新与回滚:检测到镜像更新失败时自动回退至先前版本。

Podman 是一款性能与安全并重、结构灵活的现代容器工具,是许多开发者替代 Docker 的理想选择。它在本地开发、CI/CD 管道、边缘计算环境中表现良好,同时也为 Kubernetes 和 OpenShift 提供了良好的入口。