Podman 常用命令与 --format 使用笔记
一、podman ps 与容器删除
1. 只显示容器 ID(第一列)
# 只显示运行中的容器 ID
podman ps --format "{{.ID}}"
# 显示所有容器(包括停止的)ID
podman ps -a --format "{{.ID}}"
2. 删除容器
# 删除所有容器(最简单)
podman rm -a
# 强制删除所有容器(包括运行中)
podman rm -af
# 通过管道配合 xargs 删除
podman ps --format "{{.ID}}" | xargs podman rm
podman ps -a --format "{{.ID}}" | xargs podman rm -f
# 使用命令替换
podman rm $(podman ps --format "{{.ID}}")
podman rm $(podman ps -a --format "{{.ID}}")
# 删除所有停止的容器
podman rm $(podman ps -a -q --filter "status=exited")
二、--format 常用模板字段
通用字段(适用于大多数命令)
| 字段 | 说明 |
|---|
{{.ID}} | 容器/镜像/卷的 ID |
{{.Name}} | 名称 |
{{.Created}} | 创建时间 |
{{.Size}} | 大小 |
{{.Status}} | 状态 |
podman ps 可用字段
podman ps --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"
| 字段 | 说明 |
|---|
{{.ID}} | 容器 ID |
{{.Image}} | 使用的镜像 |
{{.Command}} | 启动命令 |
{{.CreatedAt}} | 创建时间(详细) |
{{.RunningFor}} | 已运行时间 |
{{.Status}} | 容器状态 |
{{.Ports}} | 端口映射 |
{{.Names}} | 容器名称 |
{{.Labels}} | 标签 |
{{.Mounts}} | 挂载卷 |
{{.Networks}} | 网络 |
常用模板示例
# 表格形式输出
podman ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
# 自定义分隔符
podman ps --format "{{.ID}}|{{.Names}}|{{.Status}}"
# 只输出容器名
podman ps --format "{{.Names}}"
三、其他支持 --format 的 Podman 命令
1. podman images(镜像列表)
# 只显示镜像 ID
podman images --format "{{.ID}}"
# 显示仓库、标签、ID
podman images --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}"
# 常用字段
# {{.Repository}} - 仓库名
# {{.Tag}} - 标签
# {{.ID}} - 镜像 ID
# {{.Created}} - 创建时间
# {{.Size}} - 大小
2. podman ps(容器列表)
# 自定义输出
podman ps --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"
# 只输出容器名
podman ps -a --format "{{.Names}}"
3. podman volume ls(卷列表)
# 只显示卷名
podman volume ls --format "{{.Name}}"
# 显示卷名和驱动
podman volume ls --format "table {{.Name}}\t{{.Driver}}"
# 常用字段
# {{.Name}} - 卷名称
# {{.Driver}} - 驱动类型
# {{.Mountpoint}} - 挂载点
# {{.Labels}} - 标签
# {{.Scope}} - 作用域
# {{.Options}} - 选项
4. podman network ls(网络列表)
# 只显示网络名
podman network ls --format "{{.Name}}"
# 显示网络名和驱动
podman network ls --format "table {{.Name}}\t{{.Driver}}\t{{.Subnet}}"
# 常用字段
# {{.Name}} - 网络名称
# {{.Driver}} - 驱动类型
# {{.Subnet}} - 子网
# {{.Gateway}} - 网关
# {{.Interface}} - 接口
# {{.Labels}} - 标签
5. podman pod ls(Pod 列表)
# 只显示 Pod ID
podman pod ls --format "{{.ID}}"
# 显示 Pod 名称和状态
podman pod ls --format "table {{.Name}}\t{{.Status}}\t{{.ID}}"
# 常用字段
# {{.ID}} - Pod ID
# {{.Name}} - Pod 名称
# {{.Status}} - Pod 状态
# {{.Created}} - 创建时间
# {{.Cgroup}} - Cgroup 路径
# {{.Containers}} - 容器数量
# {{.InfraID}} - 基础设施容器 ID
6. podman container ls(同 podman ps)
# 命令别名,用法相同
podman container ls --format "{{.ID}}"
podman container ls -a --format "{{.Names}}"
7. podman secret ls(密钥列表)
# 只显示密钥名
podman secret ls --format "{{.Name}}"
# 显示密钥 ID 和名称
podman secret ls --format "table {{.ID}}\t{{.Name}}"
8. podman machine ls(虚拟机列表)
# 只显示虚拟机名
podman machine ls --format "{{.Name}}"
# 显示名称和 CPU
podman machine ls --format "table {{.Name}}\t{{.CPUs}}\t{{.Memory}}"
四、常用组合操作示例
批量删除
# 删除所有镜像
podman rmi -a
# 删除所有镜像(强制)
podman rmi -af
# 删除所有停止的容器
podman container prune
# 删除所有未使用的镜像
podman image prune -a
# 删除所有未使用的卷
podman volume prune
# 删除所有未使用的网络
podman network prune
批量操作配合 xargs
# 停止所有容器
podman ps --format "{{.ID}}" | xargs podman stop
# 删除所有停止的容器
podman ps -a --filter "status=exited" --format "{{.ID}}" | xargs podman rm
# 删除所有指定名称的镜像
podman images --format "{{.Repository}}:{{.Tag}}" | grep "none" | xargs podman rmi
统计信息
# 统计容器数量
podman ps -a --format "{{.ID}}" | wc -l
# 统计运行中的容器
podman ps --format "{{.ID}}" | wc -l
# 统计镜像数量
podman images --format "{{.ID}}" | wc -l
五、快速参考
| 用途 | 命令 |
|---|
| 查看所有容器 ID | podman ps -a -q |
| 查看所有容器名 | podman ps -a --format "{{.Names}}" |
| 查看所有镜像 ID | podman images -q |
| 查看所有卷名 | podman volume ls -q |
| 查看所有网络名 | podman network ls --format "{{.Name}}" |
| 删除所有容器 | podman rm -af |
| 删除所有镜像 | podman rmi -af |
| 删除所有卷 | podman volume rm -af |
| 清理未使用资源 | podman system prune -a |
六、注意事项
-q 或 --quiet 参数等同于 --format "{{.ID}}",但功能更简单table 关键字可使输出保持表格对齐- 多个字段可用
\t(制表符)或自定义分隔符连接 - 删除运行中的容器需要
-f 或 --force 参数 prune 命令更安全,只会删除未使用的资源