Podman 命令参考#
容器生命周期命令#
podman run — 创建并运行容器#
最常用的命令,等价于 podman create + podman start。
关键选项#
选项 |
说明 |
|---|---|
|
后台运行容器 |
|
指定容器名称 |
|
端口映射(主机端口:容器端口) |
|
卷挂载(主机路径:容器路径[:选项]) |
|
设置环境变量 |
|
容器退出后自动删除 |
|
指定网络模式 |
|
安全选项(label, seccomp, apparmor) |
|
用户命名空间设置 |
|
PID 命名空间设置 |
|
UTS 命名空间设置 |
示例#
# 基础运行
podman run -d --name myapp nginx:latest
# 端口映射
podman run -d -p 8080:80 -p 8443:443 nginx
# 卷挂载
podman run -d -v /host/data:/app/data:Z --name app myimage
# 环境变量
podman run -d --env DB_HOST=localhost --env DB_PORT=5432 myapp
# 安全选项
podman run --security-opt label=disable --security-opt seccomp=unconfined myapp
# 完整示例:组合多个选项
podman run -d \
--name web-server \
-p 8080:80 \
-v ./html:/usr/share/nginx/html:ro,Z \
--env NGINX_HOST=example.com \
--network mynet \
--rm \
nginx:alpine
podman create — 创建容器(不启动)#
# 创建容器,后续手动启动
podman create --name mydb -p 5432:5432 -e POSTGRES_PASSWORD=secret postgres:16
# 启动已创建的容器
podman start mydb
podman start/stop/restart — 生命周期控制#
# 启动容器
podman start myapp
# 停止容器(默认发送 SIGTERM,10秒后 SIGKILL)
podman stop myapp
# 指定超时时间
podman stop -t 30 myapp
# 重启容器
podman restart myapp
# 批量停止所有容器
podman stop --all
podman rm — 删除容器#
# 删除已停止的容器
podman rm myapp
# 强制删除运行中的容器
podman rm -f myapp
# 删除所有已停止容器
podman rm --all
# 删除容器及其关联的匿名卷
podman rm -v myapp
podman exec — 在运行中容器执行命令#
# 交互式 shell
podman exec -it myapp /bin/bash
# 执行单条命令
podman exec myapp cat /etc/hostname
# 以指定用户执行
podman exec --user root myapp apt-get update
# 设置环境变量
podman exec --env MY_VAR=value myapp printenv MY_VAR
# 指定工作目录
podman exec -w /app myapp ls -la
podman logs — 查看容器日志#
# 查看全部日志
podman logs myapp
# 实时跟踪日志
podman logs -f myapp
# 显示最近 50 行
podman logs --tail 50 myapp
# 带时间戳
podman logs -t myapp
# 指定时间范围
podman logs --since 2024-01-01T00:00:00 myapp
podman logs --until 1h myapp
podman inspect — 查看容器详细信息#
# 查看完整 JSON 信息
podman inspect myapp
# 格式化输出指定字段
podman inspect --format '{{.NetworkSettings.IPAddress}}' myapp
podman inspect --format '{{.State.Status}}' myapp
# 查看挂载信息
podman inspect --format '{{json .Mounts}}' myapp
podman cp — 容器与主机之间复制文件#
# 从主机复制到容器
podman cp ./config.yaml myapp:/etc/app/config.yaml
# 从容器复制到主机
podman cp myapp:/var/log/app.log ./app.log
# 复制目录
podman cp ./dist/ myapp:/usr/share/nginx/html/
podman attach — 连接到运行中的容器#
# 连接到容器标准输入输出
podman attach myapp
# 仅查看输出,不发送输入(Ctrl+C 不会停止容器)
podman attach --no-stdin myapp
# 指定分离快捷键
podman attach --detach-keys="ctrl-x" myapp
podman wait — 等待容器停止#
# 等待容器退出并返回退出码
podman wait myapp
# 等待特定条件
podman wait --condition stopped myapp
podman wait --condition removed myapp
podman stats — 实时资源使用统计#
# 实时监控所有容器
podman stats
# 监控指定容器
podman stats myapp mydb
# 仅输出一次(非流式)
podman stats --no-stream
# 自定义输出格式
podman stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
podman top — 显示容器进程#
# 显示容器内进程
podman top myapp
# 自定义输出字段
podman top myapp pid user comm
# 显示完整命令行
podman top myapp args
镜像管理命令#
podman build — 构建镜像#
高级选项#
选项 |
说明 |
|---|---|
|
启用层缓存(默认启用) |
|
指定远程缓存源 |
|
构建时传入密钥(不写入镜像层) |
|
传入 SSH agent |
|
指定目标平台(多架构构建) |
|
将所有层压缩为一层 |
示例#
# 基础构建
podman build -t myapp:latest .
# 指定 Containerfile
podman build -t myapp:v1 -f Containerfile.prod .
# 多阶段构建
podman build --target production -t myapp:prod .
# 多架构构建
podman build --platform linux/amd64,linux/arm64 -t myapp:multi .
# 使用 secrets(构建时可用,不写入镜像)
podman build --secret id=mysecret,src=./secret.txt -t myapp .
# 利用层缓存加速
podman build --layers --cache-from=registry.example.com/myapp:cache -t myapp .
# 传入构建参数
podman build --build-arg VERSION=1.2.3 --build-arg ENV=prod -t myapp .
# 压缩镜像层
podman build --squash -t myapp:slim .
podman pull/push — 拉取/推送镜像#
# 拉取镜像
podman pull docker.io/library/nginx:alpine
podman pull ghcr.io/myorg/myapp:latest
# 推送镜像
podman push myapp:latest docker.io/myuser/myapp:latest
# 拉取特定架构
podman pull --arch arm64 nginx:alpine
# 推送到本地目录(OCI格式)
podman push myapp:latest dir:/tmp/myapp-image
# 推送到本地 Docker archive
podman push myapp:latest docker-archive:/tmp/myapp.tar
podman images — 列出镜像#
# 列出所有镜像
podman images
# 显示所有(包括中间层)
podman images -a
# 格式化输出
podman images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
# 过滤
podman images --filter dangling=true
podman images --filter reference=nginx
podman rmi — 删除镜像#
# 删除指定镜像
podman rmi nginx:alpine
# 强制删除(即使有容器引用)
podman rmi -f myapp:old
# 删除所有未使用镜像
podman rmi --all
podman tag — 标记镜像#
# 添加标签
podman tag myapp:latest myapp:v1.0.0
podman tag myapp:latest registry.example.com/myorg/myapp:v1.0.0
podman save/load — 导出/导入镜像#
# 导出为 tar 文件
podman save -o myapp.tar myapp:latest
# 导出多个镜像
podman save -o images.tar myapp:v1 myapp:v2
# 压缩导出
podman save myapp:latest | gzip > myapp.tar.gz
# 导入镜像
podman load -i myapp.tar
# 从压缩文件导入
gunzip -c myapp.tar.gz | podman load
podman manifest — 管理多架构 manifest#
# 创建 manifest 列表
podman manifest create myapp:multi
# 添加不同架构镜像
podman manifest add myapp:multi myapp:amd64
podman manifest add myapp:multi myapp:arm64
# 查看 manifest 详情
podman manifest inspect myapp:multi
# 推送 manifest(含所有架构)
podman manifest push myapp:multi docker.io/myuser/myapp:latest
# 删除 manifest
podman manifest rm myapp:multi
Pod 管理命令#
podman pod create — 创建 Pod#
# 基础创建
podman pod create --name mypod
# 指定端口映射(Pod级别)
podman pod create --name webpod -p 8080:80 -p 8443:443
# 指定网络
podman pod create --name mypod --network mynet
# 指定共享命名空间
podman pod create --name mypod --share net,ipc,uts
# 设置 Pod infra 容器的资源限制
podman pod create --name mypod --cpus 2 --memory 1g
podman pod start/stop/restart/rm — Pod 生命周期#
# 启动 Pod(及其中所有容器)
podman pod start mypod
# 停止 Pod
podman pod stop mypod
# 重启 Pod
podman pod restart mypod
# 删除 Pod(必须先停止)
podman pod rm mypod
# 强制删除运行中的 Pod
podman pod rm -f mypod
podman pod inspect/ps — Pod 信息查看#
# 查看 Pod 详情
podman pod inspect mypod
# 列出所有 Pod
podman pod ps
# 列出 Pod 中的容器
podman pod ps --ctr-names
podman generate kube — 导出 K8s YAML#
# 从 Pod 生成 Kubernetes YAML
podman generate kube mypod > mypod.yaml
# 从容器生成
podman generate kube mycontainer > deployment.yaml
# 包含 Service 定义
podman generate kube -s mypod > mypod-with-svc.yaml
podman kube play — 从 YAML 部署#
# 从 YAML 文件部署
podman kube play mypod.yaml
# 指定网络
podman kube play --network mynet mypod.yaml
# 替换已有部署
podman kube play --replace mypod.yaml
# 使用 ConfigMap
podman kube play --configmap configmap.yaml deployment.yaml
podman kube down — 停止 YAML 部署#
# 停止并删除 YAML 部署的资源
podman kube down mypod.yaml
系统管理命令#
podman system prune — 清理未使用资源#
# 清理已停止容器、未使用网络、悬挂镜像
podman system prune
# 清理所有未使用资源(含未引用镜像和卷)
podman system prune --all --volumes
# 强制执行(不提示确认)
podman system prune -f
# 按时间过滤
podman system prune --filter until=24h
podman system reset — 重置所有数据#
# 删除所有容器、镜像、卷(危险操作)
podman system reset
# 强制执行
podman system reset --force
podman system info — 系统信息#
# 显示 Podman 系统信息
podman system info
# JSON 格式
podman system info --format json
podman system check — 系统健康检查#
# 检查存储一致性
podman system check
podman system connection — 远程连接管理#
# 添加远程连接
podman system connection add myserver ssh://user@192.168.1.100/run/podman/podman.sock
# 列出连接
podman system connection list
# 设置默认连接
podman system connection default myserver
# 删除连接
podman system connection remove myserver
Machine 命令(macOS/Windows)#
podman machine init — 初始化 VM#
# 默认初始化
podman machine init
# 自定义资源
podman machine init --cpus 4 --memory 8192 --disk-size 100
# 指定虚拟机类型(Windows 可选 wsl/hyperv)
podman machine init --machine-type hyperv
# 指定镜像
podman machine init --image-path /path/to/image
podman machine start/stop — 启动/停止#
# 启动默认 Machine
podman machine start
# 停止
podman machine stop
podman machine set — 修改配置#
# 修改 CPU 和内存(需先停止)
podman machine set --cpus 8 --memory 16384
# 设置挂载类型(macOS)
podman machine set --mount-type virtiofs
podman machine ssh — SSH 连接#
# SSH 进入 Machine
podman machine ssh
# 在 Machine 中执行命令
podman machine ssh "cat /etc/os-release"
podman machine inspect — 查看详情#
podman machine inspect
podman machine rm — 删除#
# 删除 Machine(需先停止)
podman machine rm
# 强制删除
podman machine rm -f
网络命令#
podman network create — 创建网络#
# 创建默认 bridge 网络
podman network create mynet
# 指定子网和网关
podman network create --subnet 10.89.0.0/24 --gateway 10.89.0.1 mynet
# 创建 macvlan 网络
podman network create -d macvlan --subnet 192.168.1.0/24 -o parent=eth0 macvlan-net
# 启用 IPv6
podman network create --ipv6 --subnet fd00::/64 mynet6
# 禁用 DNS
podman network create --disable-dns mynet
podman network ls/inspect/rm — 管理网络#
# 列出网络
podman network ls
# 查看网络详情
podman network inspect mynet
# 删除网络
podman network rm mynet
# 清理未使用网络
podman network prune
podman network connect/disconnect — 容器连接/断开网络#
# 将运行中容器连接到网络
podman network connect mynet mycontainer
# 指定 IP 地址
podman network connect --ip 10.89.0.100 mynet mycontainer
# 断开网络
podman network disconnect mynet mycontainer
卷命令#
# 创建命名卷
podman volume create mydata
# 列出所有卷
podman volume ls
# 查看卷详情
podman volume inspect mydata
# 删除卷
podman volume rm mydata
# 清理未使用卷
podman volume prune
# 创建带选项的卷
podman volume create --opt type=tmpfs --opt o=size=100m tmpvol
Compose 支持#
Podman 支持通过 podman compose(需安装 podman-compose 或 docker-compose)管理多容器应用。
# 启动服务(前台)
podman compose up
# 后台启动
podman compose up -d
# 停止并删除
podman compose down
# 停止并删除(含卷)
podman compose down -v
# 查看运行状态
podman compose ps
# 查看日志
podman compose logs
podman compose logs -f web
# 重新构建
podman compose build
# 缩放服务
podman compose up -d --scale web=3