[特殊字符] Podman 入门实战:从安装到实战!
什么是 Podman?
Podman 最突出的特性是支持 rootless 容器——即普通用户无需 root 权限即可运行和管理容器。从安全角度看,即使容器被攻击者攻破,也无法获得宿主机的 root 权限,有效缩小了攻击面。
注:Docker 也支持 rootless 模式,但需要额外配置且存在功能限制。
与 Docker 不同,Podman 采用 daemonless(无守护进程)架构,不依赖后台守护进程,而是直接通过 runc 与 Linux 内核交互。这意味着:
- 不存在单点故障风险(守护进程崩溃不会影响容器)
- 容器进程由用户直接管理,而非被守护进程接管
此外,Podman 天然支持多用户隔离。例如 Linux 系统中 user-a 和 user-b 分别创建的容器彼此不可见、不可修改,无需额外配置即可实现严格的权限边界。
安装 Podman
Ubuntu/Debian
sudo apt-get install runc -y
sudo apt-get install podman -y
CentOS/RHEL
sudo yum install podman -y
# 或使用 DNF
sudo dnf install podman -y
macOS
brew install podman
podman machine init # 初始化 QEMU 虚拟机
podman machine start # 启动虚拟机
注意:Windows 和 macOS 因内核限制,需通过虚拟机运行容器;Linux 原生支持体验最佳。
基础容器操作
Podman 命令与 Docker 高度兼容,只需将 docker 替换为 podman 即可:
# 拉取镜像(建议显式指定 registry)
podman pull docker.io/nginx
podman pull quay.io/quay/busybox
# 运行容器(rootless 模式)
podman run --name my-nginx -p 8080:80 docker.io/nginx
⚠️ 重要限制:rootless 模式下无法绑定 1024 以下端口(如 80/443)。若需映射低位端口,必须使用 sudo:
sudo podman run -d --name my-nginx -p 80:80 nginx
常用管理命令
podman ps # 列出运行中容器
podman ps -a # 查看所有容器
podman logs my-nginx # 查看日志
podman exec -it my-nginx sh # 进入容器
podman stop my-nginx # 停止容器
podman rm my-nginx # 删除容器
Pod 管理:Kubernetes 风格的多容器编排
Podman 原生支持 Pod 概念——多个容器共享网络和存储命名空间的逻辑单元,与 Kubernetes 完全兼容。
创建空 Pod
podman pod create --name demo-pod
podman pod ls # 列出所有 Pod
podman ps -a --pod # 查看 Pod 内容器(含 infra 容器)
创建空 Pod 时,Podman 会自动添加一个 k8s.gcr.io/pause infra 容器用于维持命名空间。
向 Pod 添加容器
# 向现有 Pod 添加 Nginx 容器
podman run -dt --pod demo-pod nginx
一键创建 Pod 与容器
# 创建名为 frontend 的 Pod 并添加 Nginx 容器
podman run -dt --pod new:frontend -p 8080:80 nginx
与 Kubernetes 无缝集成
Podman 支持双向转换:既可从本地 Pod 生成 Kubernetes YAML,也可用 YAML 部署 Pod。
# 1. 创建 Pod
podman run -dt --pod new:webserver -p 8080:80 nginx
# 2. 生成 Kubernetes YAML
podman generate kube webserver > webserver.yaml
# 3. 查看生成的 YAML(简化示例)
apiVersion: v1
kind: Pod
meta
name: webserver
spec:
containers:
- name: nginx
image: docker.io/library/nginx:latest
ports:
- containerPort: 80
hostPort: 8080
生成的 YAML 可直接用于 Kubernetes 集群部署,实现本地开发与生产环境的一致性。
总结
Podman 以 daemonless 架构和开箱即用的 rootless 支持,在安全性与可靠性上优于传统 Docker。其原生 Pod 支持与 Kubernetes 无缝衔接,特别适合注重安全的生产环境及需要与 K8s 保持一致的开发场景。对于 Red Hat 系发行版用户,Podman 已成为默认容器工具;随着 rootless 容器成为行业最佳实践,Podman 正逐步走向主流。
更多推荐




所有评论(0)