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分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节