直接运行docker system df即可查看docker系统磁盘占用汇总,输出含images、containers、local volumes和build cache四类资源的total、active、size及reclaimable值;加-v参数可展开明细,结合du等命令进一步定位大文件。
直接运行 docker system df 就能快速查看 docker 系统整体磁盘占用情况。
查看汇总信息(最常用)
这条命令输出一个简洁表格,按类型分类统计空间使用:
- Images:所有镜像(含共享层和悬空层)占用的总空间
-
Containers:所有容器可写层(
overlay2/diff)的合计大小,不包含镜像基础层 -
Local Volumes:独立 volume 的总占用,路径通常为
/var/lib/docker/volumes/<name>/_data</name> - Build Cache:Docker BuildKit 缓存数据,长期未用可能积压数百 MB 甚至 GB
每行还显示 RECLAIMABLE 列,标明当前可安全清理的空间及占比,比如 460.6MB (5%) 表示镜像中近 5% 的空间能通过 prune 释放。
展开详情定位大户
加 -v 参数可逐个列出对象,方便排查谁占得多:
-
docker system df -v | grep -A 5 "Images":只看镜像明细,含仓库名、标签、创建时间、SIZE -
docker system df -v | grep -A 10 "Volumes":查看每个 volume 名称和对应宿主机路径 - 注意:同一镜像多个标签(如
nginx:latest和nginx:1.25)会合并计为一条,SIZE 是共享层总和
配合系统命令进一步分析
docker system df 不深入文件级,需组合其他命令确认具体大文件来源:
- 查最大的 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 3 - 查运行中容器的写层变化量:
docker ps -q | xargs -I {} sh -c 'echo {}; docker diff {} | wc -l' | sort -k2 -nr | head -n 3 - 确认
/var/lib/docker总大小:sudo du -sh /var/lib/docker
补充:快速验证是否真被 Docker 占满
有时误判是因日志或临时文件,建议同步检查:
- 容器日志位置:
/var/lib/docker/containers/*/*-json.log,可能单个超 GB - 构建缓存是否异常膨胀:
docker builder prune -a可单独清理 BuildKit 缓存 - 对比
df -h和docker system df的 SIZE 差值,差太多说明有非 Docker 文件混在/var/lib/docker下











