Podman 新技术

📃个人主页:island1314
⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞
- 生活总是不会一帆风顺,前进的道路也不会永远一马平川,如何面对挫折影响人生走向 – 《人民日报》
🔥 目录
Podman 是一个开源的容器管理工具,旨在提供与 Docker 类似的体验,但具有更高的安全性和灵活性。本指南将介绍 Podman 是什么、如何安装、配置以及运行容器的基本操作,适合初学者快速上手。
一、Podman 是什么?
Podman(Pod Manager)是一个由 Red Hat 主导开发的开源容器管理工具,无需守护进程(daemonless)、无需 root 权限(rootless),完全兼容 Docker CLI 和 OCI(Open Container Initiative)标准。
它的设计目标之一就是 作为 Docker 的直接替代品,尤其在企业级 Linux 环境(如 RHEL、CentOS、Fedora)中被广泛采用。
二、Podman 与 Docker 的对比
它与 Docker 的主要区别在于:
- 无守护进程:Podman 不依赖后台守护进程,直接以用户权限运行容器,减少安全风险。
- 兼容 Docker:Podman 支持 Docker 命令行接口(CLI),可以无缝迁移现有 Docker 工作流。
- 支持 Pods:Podman 引入了 Kubernetes 风格的 Pod 概念,允许在同一 Pod 中运行多个容器。
- 根权限可选:Podman 支持无根(rootless)模式,普通用户无需 root 权限即可运行容器。
| 特性 | Docker | Podman |
|---|---|---|
| 守护进程 | 需要 dockerd 后台进程 |
无守护进程,直接 fork 容器进程 |
| Root 权限 | 默认需要 root 或 docker 组 | 支持 rootless 模式(普通用户即可运行) |
| 镜像构建 | 使用 docker build 命令,依赖 BuildKit |
使用 podman build 命令,依赖 Buildah |
| 容器生命周期管理 | 通过守护进程管理容器生命周期 | 基于 systemd 管理容器生命周期 |
| 安全性 | 较高,但 daemon 是攻击面 | 更安全(无 daemon,权限隔离更好) |
| CLI 兼容性 | 原生 | 高度兼容:alias docker=podman 基本可用 |
| Compose 支持 | 原生支持 docker-compose |
通过 podman-compose 或新版本内置 podman compose |
| Swarm 支持 | 支持 | 不支持,但可以通过 Nomad 等工具替代 |
| Kubernetes 集成 | 需额外工具(如 Kind) | 原生支持生成 Kubernetes YAML(podman generate kube) |
| Pod 概念 | 不原生支持(需用 Swarm/K8s) | 原生支持 Pod(类似 K8s 的 Pod 模型) |
| 性能 | 一般性能良好,但在大规模部署或启动时间敏感的环境中可能稍逊于 Podman | 由于无守护进程架构,容器启动时间更快 |
| 使用场景 | 开发环境、CI/CD 流水线、生产环境 | 安全性要求高的环境、生产环境、与 Kubernetes 集成 |
| 许可证 | Docker Engine 为 Apache License 2.0,Docker Desktop 需要订阅(大企业) | 完全开源,Apache License 2.0 |
三、安装配置 Podman
1. 在 Ubuntu 上安装
① 更新系统包索引
sudo apt update
② 安装 Podman
sudo apt install -y podman
③ 验证安装
podman --version
输出类似 podman version 4.x.x,表示安装成功。

2. 在 Windows 安装
Podman 官方推荐使用 Podman Desktop,一个图形化工具,支持跨平台
3. 配置 Podman
① 配置容器注册表:Podman 默认从 Docker Hub 拉取镜像,但可以添加其他注册表(如 quay.io)。
编辑 /etc/containers/registries.conf(需要 root 权限)或用户级配置文件 ~/.config/containers/registries.conf:
[registries.search]
registries = ['docker.io', 'quay.io', 'registry.fedoraproject.org']
② 无 root模式配置
Podman 支持无root运行,但需要确保系统支持用户命名空间。检查是否支持:
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER
③ 配置存储
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 nginx
podman run -d --pod mypod redis
③ 查看 Pod 状态:
podman pod ls
6. 构建自定义镜像
Podman 支持使用 Containerfile 或 Dockerfile 构建镜像。创建一个简单的 Containerfile:
FROM nginx:latest
COPY 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 命令](https://so.csdn.net/so/search?q=Docker 命令&spm=1001.2101.3001.7020)。例如,docker run 可替换为 podman run。若需要 Docker CLI 兼容性,可创建别名:
alias docker=podman
性能优化
- 使用
--storage-driver=overlay提高性能。 - 定期清理未使用的镜像和容器:
podman system prune
【★,°:.☆( ̄▽ ̄)/$:.°★ 】那么本篇到此就结束啦,如果有不懂 和 发现问题的小伙伴可以在评论区说出来哦,同时我还会继续更新关于【Docker】的内容,请持续关注我 !!

更多推荐




所有评论(0)