Podman 快速使用
1. Podman 是什么
Podman(Pod Manager)是一个 无守护进程(daemonless) 的容器管理工具,用来运行、构建和管理 OCI(Open Container Initiative) 兼容的容器和镜像。它的定位类似 Docker CLI,但有一些显著区别:
• 无守护进程:Podman 不需要 dockerd 这样的常驻后台服务,每个容器都是直接由 fork/exec 生成的进程。
• Rootless 模式:普通用户就能运行容器,无需 root 权限,提高安全性
• 兼容 Docker CLI:大多数 Docker 命令参数可直接用 Podman 替换,如 docker run → podman run。
• Pod 概念:与 Kubernetes 类似,支持在同一个网络命名空间下运行多个容器(Pod 模式)。
• 镜像标准化:完全兼容 OCI 镜像格式,能直接拉取 Docker Hub 镜像。
2. Podman 基础命令
# 查看版本
podman --version
# 搜索镜像
podman search nginx
# 拉取镜像
podman pull nginx
# 列出本地镜像
podman images
# 运行容器
podman run -d --name mynginx -p 8080:80 nginx
# 查看运行的容器
podman ps
# 查看所有的容器
podman ps -a
# 停止容器
podman stop mynginx
# 启动容器
podman start mynginx
# 删除容器
podman rm mynginx
# 删除镜像
podman rmi nginx
3. Pod 概念与用法
Podman 引入了 Pod,可以让多个容器共享网络和 IPC 资源:
podman pod create --name mypod -p 8080:80
podman run -d --pod mypod nginx
podman run -d --pod mypod redis
这里 nginx 和 redis 共享同一个 Pod 的网络命名空间。
4. Rootless 模式
普通用户直接运行:
podman run --rm -it alpine sh
5. 构建镜像
# myimage Tag 标签
# . Dockerfile 所在目录
podman build -t myimage .
6. 简单工作流
# 拉取镜像
podman pull nginx
# 运行容器
podman run -d --name web -p 8080:80 nginx
# 查看运行状态
podman ps
# 进入容器
podman exec -it web bash
# 停止
podman stop web
# 删除
podman rm web
7. Podman VM
在非 Linux 平台(Mac / Windows) 上使用 Podman 时,需要一个轻量虚拟机来提供 Linux 内核环境,podman machine 是用来管理这个虚拟机的工具。
# 初始化一个 Podman 虚拟机
podman machine init
# 启动虚拟机
podman machine start
# 停止运行中的虚拟机
podman machine stop
# 列出当前的虚拟机及状态
podman machine list
# 进入虚拟机 SSH
podman machine ssh
podman machine ssh "cat /etc/os-release"
# 删除虚拟机
podman machine rm
# 查看虚拟机的详细信息
podman machine inspect
# 重置虚拟机到初始状态
podman machine reset
# 动态修改虚拟机资源
podman machine set --cpus=4 --memory=8192