Podman 快速上手指南:替代 Docker 的新选择
Podman 是一个开源的容器管理工具,旨在提供与 Docker 类似的体验,但具有更高的安全性和灵活性。本指南将介绍 Podman 是什么、如何安装、配置以及运行容器的基本操作,适合初学者快速上手。
什么是 Podman?
Podman(Pod Manager)是一个无守护进程(daemonless)的容器引擎,用于开发、管理和运行 OCI(Open Container Initiative)容器。它与 Docker 的主要区别在于:
- 无守护进程:Podman 不依赖后台守护进程,直接以用户权限运行容器,减少安全风险。
- 兼容 Docker:Podman 支持 Docker 命令行接口(CLI),可以无缝迁移现有 Docker 工作流。
- 支持 Pods:Podman 引入了 Kubernetes 风格的 Pod 概念,允许在同一 Pod 中运行多个容器。
- 根权限可选:Podman 支持无根(rootless)模式,普通用户无需 root 权限即可运行容器。
Podman 是红帽(Red Hat)主导的项目,广泛应用于 Linux 环境中,尤其适合企业级容器管理和开发。
Docker vs Podman
以下是询问Kimi得出来的对比表格
dockerd)docker build 命令,依赖 BuildKitpodman build 命令,依赖 Buildahsystemd 管理容器生命周期podman.socket 替代 Docker 守护进程安装 Podman
Podman 支持多种 Linux 发行版,以下以 Ubuntu 和 CentOS 为例介绍安装步骤。对于其他系统(如 macOS 或 Windows),可以通过 Podman Desktop 或虚拟机运行。
在 Ubuntu 上安装
-
更新系统包索引:
sudo apt update -
安装 Podman:
sudo apt install -y podman -
验证安装:
podman --version输出类似
podman version 4.x.x,表示安装成功。
在 CentOS/RHEL 上安装
-
安装 Podman:
sudo dnf install -y podman -
验证安装:
podman --version
macOS/Windows 用户
Podman 官方推荐使用 Podman Desktop,一个图形化工具,支持跨平台。或者在 macOS 上通过 Homebrew 安装:
brew install podman
Windows 用户可通过 WSL2(Windows Subsystem for Linux)安装 Linux 发行版后按上述步骤操作。
配置 Podman
1. 配置容器注册表
Podman 默认从 Docker Hub 拉取镜像,但可以添加其他注册表(如 quay.io)。编辑 /etc/containers/registries.conf(需要 root 权限)或用户级配置文件 ~/.config/containers/registries.conf:
[registries.search]registries = [\'docker.io\', \'quay.io\', \'registry.fedoraproject.org\']
2. 无 root模式配置
Podman 支持无root运行,但需要确保系统支持用户命名空间。检查是否支持:
podman info --debug | grep user
若需要启用无root模式,设置 subuid 和 subgid:
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER
3. 配置存储
Podman 的存储配置文件位于 /etc/containers/storage.conf 或 ~/.config/containers/storage.conf。默认使用 overlay 文件系统,可根据需要调整存储驱动或路径。
运行容器
1. 拉取镜像
从 Docker Hub 拉取一个 Nginx 镜像:
podman pull docker.io/library/nginx
2. 运行容器
启动一个 Nginx 容器,映射主机端口 8080 到容器端口 80:
podman run -d -p 8080:80 nginx
-d:后台运行容器。-p:端口映射,格式为主机端口:容器端口。
访问 http://localhost:8080,即可看到 Nginx 欢迎页面。
3. 查看运行中的容器
列出所有运行中的容器:
podman ps
列出所有容器(包括已停止的):
podman ps -a
4. 管理容器
-
停止容器:
podman stop <container_id> -
删除容器:
podman rm <container_id> -
查看容器日志:
podman logs <container_id>
5. 创建和运行 Pod
Podman 支持 Kubernetes 风格的 Pod,允许多个容器共享网络和存储。创建一个 Pod:
podman pod create --name mypod
在 Pod 中运行两个容器:
podman run -d --pod mypod nginxpodman run -d --pod mypod redis
查看 Pod 状态:
podman pod ls
6. 构建自定义镜像
Podman 支持使用 Containerfile 或 Dockerfile 构建镜像。创建一个简单的 Containerfile:
FROM nginx:latestCOPY index.html /usr/share/nginx/html
构建镜像:
podman build -t my-nginx .
运行自定义镜像:
podman run -d -p 8080:80 my-nginx
常见问题
Podman vs Docker
- Podman:无守护进程、支持无根运行、原生支持 Pod。
- Docker:依赖守护进程、需要 root 权限(除非配置 Docker rootless)。
- 参考上方对比表格
迁移 Docker 工作流
Podman 提供 Docker 兼容的 CLI,可以直接使用 Docker 命令。例如,docker run 可替换为 podman run。若需要 Docker CLI 兼容性,可创建别名:
alias docker=podman
性能优化
- 使用
--storage-driver=overlay提高性能。 - 定期清理未使用的镜像和容器:
podman system prune
总结
Podman 是一个功能强大且安全的容器管理工具,适合开发者和企业用户。通过本指南,你可以快速安装 Podman,配置环境,并开始运行和管理容器。Podman 的无根模式和 Pod 支持使其在现代容器化工作流中独具优势。
欢迎关注我的公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节


