Files
docker_practice/13_ecosystem/podman/README.md
2026-02-12 16:51:50 -08:00

2.6 KiB
Raw Blame History

podman

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

Podman vs Docker

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

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

安装

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

CentOS / RHEL

运行以下命令:

$ sudo yum -y install podman

macOS

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

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

使用

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 .

Pods 的概念

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

## 创建一个 Pod

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

## 在 Pod 中运行容器

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

迁移到 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

参考