Files
docker_practice/17_ecosystem/17.3_podman.md
T
yeasy a6ecb73f67 fix(17): Podman/Buildah/Skopeo 与 Spin 的官方仓库已迁出原组织
四条链接指向的仓库都换了归属,旧地址目前只靠 GitHub 的改名重定向活着:

- Podman、Buildah、Skopeo 已从 `containers` 迁到 2026-04-20 新建的
  `podman-container-tools` 组织。podman.io 首页与 Get Started 页现在
  直接链向 `podman-container-tools/podman`;GitHub API 显示该仓库 32.7k
  星、homepage 为 podman.io、最后推送在 2026-08-21,是活跃主仓。
  注意 `containers` 组织本身还在(`containers/image`、`common`、`storage`
  等仍留在原处),迁走的只有这三个,故只改这三条。
- Spin 已随项目捐给 CNCF 改名 Spin Framework,仓库为 `spinframework/spin`
  (homepage `https://spinframework.dev`),`developer.fermyon.com/spin`
  现在整站 302 到 `spinframework.dev`。

17.5 的「属于 containers 项目生态」一句同步改掉——那句话本身随迁移失效了。
2026-08-22 23:24:20 -07:00

2.7 KiB

17.3 Podman - 下一代 Linux 容器工具

版本说明:Podman 保持活跃的开发和发布周期。建议访问 Podman 官方文档 和 GitHub Releases 获取最新版本。

Podman 是一个无守护进程、与 Docker 命令高度兼容的下一代 Linux 容器工具。它由 Red Hat 开发,旨在提供一个更安全的容器运行环境。

17.3.1 Podman vs Docker

Podman 和 Docker 在设计理念上存在显著差异,主要体现在架构和权限模型上。

特性 Docker Podman
架构 C/S 架构,依赖守护进程 (dockerd) 无守护进程 (Daemonless)
权限 默认需要 root 权限 (虽有 Rootless 模式) 默认支持 Rootless (非 root 用户运行)
生态 完整的生态系统 (Compose, Swarm) 专注单机容器,配合 Kubernetes 使用
镜像构建 docker build podman build 或 buildah

17.3.2 安装

Podman 支持多种操作系统,安装过程也相对简单。

CentOS / RHEL

$ sudo yum -y install podman

macOS

macOS 上需要安装 Podman Desktop 或通过 Homebrew 安装:

$ brew install podman
$ podman machine init
$ podman machine start

17.3.3 基本使用

podman 的命令行几乎与 docker 完全兼容,大多数情况下,你只需将 docker 替换为 podman 即可。

运行容器

## $ docker run -d -p 80:80 nginx:alpine

$ podman run -d -p 80:80 nginx:alpine

列出容器

$ podman ps

构建镜像

$ podman build -t myimage .

17.3.4 Pods 的概念

与 Docker 不同,Podman 支持“Pod”的概念 (类似于 Kubernetes 的 Pod),允许你在同一个网络命名空间中运行多个容器。

## 创建一个 Pod

$ podman pod create --name mypod -p 8080:80

## 在 Pod 中运行容器

$ podman run -d --pod mypod --name webbing nginx

17.3.5 迁移到 Podman

如果你习惯使用 docker 命令,可以简单地设置别名:

$ alias docker=podman

Systemd 集成

Podman 可以生成 systemd 单元文件,让容器像普通系统服务一样管理。

## 创建容器

$ podman run -d --name myweb -p 8080:80 nginx

## 生成 systemd 文件

$ podman generate systemd --name myweb --files --new

## 启用并启动服务

$ systemctl --user enable --now container-myweb.service

Podman Compose

虽然 Podman 兼容 Docker Compose,但在某些场景下你可能需要明确使用 podman-compose。

$ pip3 install podman-compose
$ podman-compose up -d