直接运行 docker system df 就能快速看到 Docker 整体磁盘占用分布,它按 Images、Containers、Local Volumes、Build Cache 四类资源分组统计 SIZE(实际占用)、RECLAIMABLE(可安全清理量)和 TOTAL(资源总数),加 -v 参数可展开明细,再用 sudo du -sh /var/lib/docker 交叉验证真实用量。

直接运行 docker system df 就能快速看到 Docker 整体磁盘占用分布,它按资源类型分类统计,帮你一眼识别空间“大户”。
基础统计:看懂默认输出的五列含义
执行命令后,你会看到类似这样的表格:
- TYPE:资源类型,常见有 Images、Containers、Local Volumes、Build Cache
- TOTAL:该类资源总数量(比如共 12 个镜像)
- ACTIVE:当前正在被使用的数量(比如 5 个镜像正被运行中的容器引用)
- SIZE:实际已占用磁盘空间(注意:Images 的 SIZE 是所有层叠加后的共享体积,不是简单相加)
- RECLAIMABLE:可安全清理的空间大小及占比(比如 “1.2GB (63%)” 表示近三分之二镜像空间闲置)
详细定位:用 -v 参数展开具体项目
加 -v 参数才能看到每个镜像、容器或 volume 的明细:
- 在 Images 区域,会列出 REPOSITORY、TAG、IMAGE ID、CREATED 和 SIZE;同一镜像多个标签只算一次,SIZE 是共享层总和
- 悬空镜像(dangling=true)单独成行,通常无引用,可优先考虑清理
- 在 Local Volumes 区域,显示 volume 名称和宿主机路径(如
/var/lib/docker/volumes/mydb_data/_data),方便你后续用du -sh进一步探查
配合外部命令,精准找到“大块头”
docker system df 告诉你“哪类占得多”,但不告诉你“具体哪个文件撑的”。这时需要组合 Linux 工具:
- 查最大的 volume:
docker volume ls -q | xargs -I {} sh -c 'echo {}; sudo du -sh /var/lib/docker/volumes/{}/_data 2>/dev/null' | sort -hr | head -n 5 - 查容器写层膨胀情况:
docker ps -q | xargs -I {} sh -c 'echo "Container {}:"; sudo du -sh /var/lib/docker/overlay2/$(cat /var/lib/docker/containers/{}/hostname)/diff 2>/dev/null' - 确认整体 Docker 目录用量:
sudo du -sh /var/lib/docker,与docker system df的 SIZE 总和交叉验证
清理前先看可回收量,避免误删
从 RECLAIMABLE 列数值入手,判断清理收益:
- 镜像可回收多 → 执行
docker image prune -a(慎用,会删所有未被引用镜像) - 容器可回收高 → 先
docker container prune清停止容器,再检查是否遗留大量Exited状态 - Volume 可回收极少但 SIZE 很大 → 说明数据活跃,别急着
prune,先进_data目录看日志、缓存或备份文件


















