首页/云/Docker 容器速查/卷占用统计与使用方反查
网络与存储52 条

卷占用统计与使用方反查

统计卷实际占用并反查哪些容器在用:docker system df -v 给出卷清单,容量精确值直接对 Mountpoint 做 du。

Docker 容器速查云更新于 2026-10-13

卷占用与归属排查

卷的容量统计有两层:docker system df -v 能列出卷清单与大小,但部分存储驱动不填 SIZE 字段,数值仅供参考;精确值要找到卷的挂载点直接做目录统计。反查使用方用容器过滤条件即可,已停止的容器同样会被列出,因为接入关系的判断只看引用而不看运行状态。按这两步走,磁盘告警时能快速定位到是哪个卷、被哪些容器占用。

基本信息

清单docker system df -v 的卷明细段
精确统计对卷挂载点执行 du -sh
反查使用方docker ps -a --filter volume=卷名
找到路径docker volume inspect 卷名 的 Mountpoint 字段

典型使用场景

  • 磁盘告警定位:确认是数据库卷还是日志卷吃掉的空间
  • 清理前评估:找出没有任何容器引用的卷再考虑删除
  • 容量规划:定期记录关键卷的增长速率
  • 数据迁移:确认源卷的挂载点与大小后规划迁移窗口
  • 排查数据去哪了:容器的存储位置是卷还是可写层

统计与反查

统计与反查
# 卷清单与粗略大小
docker system df -v | sed -n '/Local Volumes/,$p' | head -20

# 找到挂载点后做精确统计
docker volume inspect pgdata --format '{{.Mountpoint}}'
sudo du -sh /var/lib/docker/volumes/pgdata/_data

# 反查哪些容器在用这个卷
docker ps -a --filter volume=pgdata --format '{{.Names}}\t{{.Status}}'

手段与适用场景

需求命令注意
列出全部卷docker volume ls看名字与驱动,识别匿名卷
看大致体积docker system df -v部分驱动 SIZE 为空
看精确体积du -sh 挂载点大卷统计有 IO 开销
反查使用方docker ps -a --filter volume=包含已停止的容器
空的 SIZE 列不代表卷里没有数据,不同驱动对大小字段的支持不一致,以挂载点的目录统计为准。
磁盘被占满但找不到对应文件时,考虑已删除但被进程持有的文件,需要重启相关进程才能释放。
定期记录关键卷的体积是容量规划最实用的做法:在业务低谷采集一次,观察增长速率,就能提前判断是否需要扩容或清理,而不是等到磁盘写满。

易错点

  • 只看 system df 的大小列:部分驱动不填该字段,容易得出「卷是空的」这种错误结论
  • 在大卷上高峰时段直接统计:目录遍历有 IO 开销,安排在业务低谷执行
  • 删卷前不反查使用方:已停止的容器也算引用,误删后数据无法从容器恢复
  • 忽略可写层占用:容器内写入的数据不落在卷里,排查磁盘要同时看容器层的体积

数据来源与参考

  • Docker 官方 CLI 参考:docker system df 与 docker ps 过滤(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌