← [ BACK_TO_NOTES ]

Docker 磁盘占用诊断:system df、builder du 与 buildx du

分层查看 Docker 镜像、容器、卷和 BuildKit 构建缓存的磁盘占用,区分可回收空间与活动数据。

#howto #growing #ops #docker #linux #linux

[!info] related notes

Docker 磁盘占用诊断:system df、builder du 与 buildx du

定位

当 gdu 看到 /var/lib/docker、/var/lib/containerd 很大时,不要直接 rm -rf。

Docker / containerd 的 layer、snapshot、content blob 有内部引用关系,应优先通过 Docker CLI 判断:

镜像
容器 writable layer
volume
BuildKit cache

第一层:docker system df

docker system df

它给出 Docker 维度的总览:

TYPE            TOTAL   ACTIVE   SIZE     RECLAIMABLE
Images
Containers
Local Volumes
Build Cache

重点是 RECLAIMABLE:

它表示 Docker 判断当前没有必要继续持有、理论上可回收的数据,而不是“所有 SIZE 都可以删”。

详细模式

docker system df -v

用于继续定位具体 image、container、volume。

第二层:Builder / BuildKit

经典 builder:

docker builder du

如果当前环境主要使用 Buildx / BuildKit:

docker buildx du

Docker 官方 docker buildx du 会显示:

  • cache record ID;
  • RECLAIMABLE;
  • SIZE;
  • LAST ACCESSED;
  • Shared / Private / Total。

详细输出:

docker buildx du --verbose

为什么磁盘上看到 30 GB,不等于能删 30 GB

容器镜像采用内容寻址与 layer 共享:

Image A ─┐
         ├─ shared layer
Image B ─┘

所以:

  • 多个 tag 可能指向同一个 image ID;
  • 多个 image 可能共享 layer;
  • build cache 也可能与 image 共享底层数据。

因此不能把每个 tag 显示的大小直接相加。

清理顺序

1. 先确认活动容器

docker ps

再映射实际 image ID:

docker ps -q | xargs -r docker inspect -f '{{.Name}} {{.Image}}'

2. Builder cache

确认确实是可回收构建缓存后:

docker builder prune

更激进:

docker builder prune -a

-a 会删除更多未使用 cache,可能使下次构建明显变慢。

3. dangling images

docker image prune

4. 明确的旧业务镜像

比 docker system prune -a 更稳妥的方法是:

识别当前运行镜像
→ 保留最近 rollback anchor
→ 按 image ID / tag 精确删除旧构建
docker image rm <image-or-tag>

5. Volume 最谨慎

Volume 很可能就是数据库和业务状态。

docker volume ls
docker system df -v

删除前必须确认 owner、挂载关系和数据生命周期。

不应该做什么

不要直接删除 containerd 数据目录

rm -rf /var/lib/containerd/*   # 危险

这可能破坏运行时元数据与正在使用的 snapshot。

不要把 docker system prune -a --volumes 当日常命令

这条命令把多个危险动作捆在一起,不利于审计和回滚。

containerd 占用很大时

先看:

sudo du -xhd1 /var/lib/containerd | sort -h

常见大项:

io.containerd.snapshotter.v1.overlayfs
io.containerd.content.v1.content

再回到 Docker CLI 判断对应镜像 / cache,而不是直接处理目录本身。

来源

创建于 2026/9/29 更新于 2026/9/29
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本