Podman 教程

Podman 数据卷查询

前面章节介绍了如何使用 podman volume create 命令创建数据卷,数据卷创建后,我们可以使用podman volume list(简写:podman volume ls)命令查看本地所有的数据卷,用于快速检索已创建的卷、筛选特定卷、查看卷的关键元数据,是数据卷管理的基础操作。

基础语法

运行 podman volume list --help 命令,查看详细命令手册:

C:\Users\Administrator> podman volume list --help
列出数据卷

说明:

podman volume ls

列出所有可用的数据卷。可对数据卷的输出结果进行筛选,
也可将输出格式改为 JSON 格式或用户指定的 Go 模板格式。

用法:
  podman volume ls [选项]

别名:
  ls, list

选项:
  -f, --filter stringArray   筛选数据卷输出结果
      --format string        使用 Go 模板格式化数据卷输出结果
                             (默认值为 "{{range .}}{{.Driver}}\t{{.Name}}\n{{end -}}")
  -n, --noheading            不打印表头
  -q, --quiet                以精简模式打印数据卷输出结果

后续将逐步介绍该命令的用法。

基本用法

如果执行无参数的 podman volume ls命令将列出本地所有的数据卷,默认输出两列核心信息,如下:

C:\Users\Administrator> podman volume ls
DRIVER      VOLUME NAME
local       55721eeb6f6f208acdea7cd3cd2d464945ad3fd5367263685c158dc61bea7171
local       6233bc6b7031724a212b0ce80956619313c74c2d0ca01474ed349d4b6a5e0465
local       75ea3e45783042a8333d94838ff4bb38001411d065f0cde73ff775465ae67853
local       redis-data
local       nginx-conf
local       nginx-html
local       79c3da55755c8c60fccc9a75c9dc682eabfddaf35df21fda244d46c395f8a270
local       mydata
local       324a6d248cda8803d130aa2917bc6fe31c1ba35121420fbfdc523d18c41fbb9b
local       my_volume
local       1cbe65f784c4bb2f774e63c612f62e99d1316b27975ebda62f7040d46b964d1a
local       nfs_volume
local       db_volume
local       user_volume

列说明:

  • DRIVER:卷使用的驱动(99% 场景为 local,即本地驱动;也可显示 NFS/CSI 等第三方驱动)

  • VOLUME NAME:卷的名称(自定义名称或 Podman 自动生成的随机 UUID 名称)

核心选项(筛选 / 格式化)

筛选卷(--filter /-f)

卷筛选时最常用的功能,支持按标签、驱动、名称、状态等维度筛选卷,解决 “卷太多难以定位” 的问题。

基本语法格式:

podman volume ls --filter "键=值"  # 单条件筛选
podman volume ls --filter "键1=值1" --filter "键2=值2"  # 多条件叠加(且关系)

常用筛选条件:

  • label:按标签筛选(支持 key=value),如 podman volume ls -f label=app=database

  • driver:按驱动筛选,如 podman volume ls -f driver=local

  • name:按名称筛选(支持模糊匹配),如 podman volume ls -f name=db_

  • dangling:筛选未被使用的 “僵尸卷”,如 podman volume ls -f dangling=true

什么是“僵尸卷”?

僵尸卷(也叫“悬空卷 / 未引用卷”) 是指:已创建但未被任何容器(包括已停止的容器)引用的 Podman 数据卷—— 这类卷仅占用主机磁盘空间,无任何运行 / 停止的容器关联,相当于 “无主” 的冗余数据卷,是 Podman 中磁盘空间浪费的常见原因。

示例:

# 筛选标签 version=1.0 且 app=database 的卷
C:\Users\Administrator> podman volume ls -f label=version=1.0 -f label=app=database
DRIVER      VOLUME NAME
local       db_volume

# 根据数据卷名称进行筛选,筛选所有包含 nginx 字符的数据卷
C:\Users\Administrator> podman volume ls -f name=nginx
DRIVER      VOLUME NAME
local       nginx-conf
local       nginx-html

格式化输出(--format)

自定义输出内容,支持 Go 模板语法,适合脚本化处理或提取特定字段。

常用格式化模板:

  • {{.Name}}    仅显示卷名,如 db_volume

  • {{.Driver}}    仅显示驱动,如 local

  • {{.Mountpoint}}    显示卷的本地挂载路径,如 /var/lib/containers/storage/volumes/db_volume/_data

  • {{.Labels}}    显示卷的所有标签,如 map[app:database environment:production]

  • json    输出 JSON 格式(易解析),如 [{"Name":"db_volume","Driver":"local",...}]

示例:提取卷名和挂载路径(表格格式)

C:\Users\Administrator> podman volume ls --format "table {{.Name}}\t{{.Mountpoint}}"
VOLUME NAME                                                       MOUNTPOINT
55721eeb6f6f208acdea7cd3cd2d464945ad3fd5367263685c158dc61bea7171  /home/user/.local/share/containers/storage/volumes/55721eeb6f6f208acdea7cd3cd2d464945ad3fd5367263685c158dc61bea7171/_data
6233bc6b7031724a212b0ce80956619313c74c2d0ca01474ed349d4b6a5e0465  /home/user/.local/share/containers/storage/volumes/6233bc6b7031724a212b0ce80956619313c74c2d0ca01474ed349d4b6a5e0465/_data
75ea3e45783042a8333d94838ff4bb38001411d065f0cde73ff775465ae67853  /home/user/.local/share/containers/storage/volumes/75ea3e45783042a8333d94838ff4bb38001411d065f0cde73ff775465ae67853/_data
redis-data                                                        /home/user/.local/share/containers/storage/volumes/redis-data/_data
....

示例:JSON 格式输出(脚本解析用)

C:\Users\Administrator> podman volume ls --format json
[
  {
    "Name": "55721eeb6f6f208acdea7cd3cd2d464945ad3fd5367263685c158dc61bea7171",
    "Driver": "local",
    "Mountpoint": "/home/user/.local/share/containers/storage/volumes/55721eeb6f6f208acdea7cd3cd2d464945ad3fd5367263685c158dc61bea7171/_data",
    "CreatedAt": "2025-11-20T16:56:55.939217946+08:00",
    "Labels": {

    },
    "Scope": "local",
    "Options": {

    },
    "Anonymous": true,
    "MountCount": 0,
    "NeedsCopyUp": true,
    "NeedsChown": true,
    "LockNumber": 2
  },...
]

注意事项

  1. root/rootless 模式隔离:podman volume ls 仅显示当前模式下的卷(root 模式看不到 rootless 卷,反之亦然)。

    1. 切换模式查看:podman --user root volume ls(root 模式)、podman --user $(id -u) volume ls(rootless 模式)。

  1. 远程卷显示:若使用 CSI/NFS 等远程驱动,Mountpoint 字段可能显示远程路径或本地挂载点,需结合 podman volume inspect 确认详情。

  2. 筛选 “僵尸卷”:dangling=true 仅筛选 “未被任何容器引用” 的卷,若卷被已停止的容器引用,仍会被判定为 “非僵尸卷”,需先删除无用容器再筛选。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号