构建缓存单独统计
docker buildx du 统计 BuildKit 构建缓存的磁盘占用,docker buildx prune 按规则清理。缓存既不在 docker images 的口径里,也不完全体现在 docker system df 的镜像列里,长期跑的 CI 构建机上它常常是最大的一块占用,需要单独盯着。命令依赖 BuildKit 构建器,由 buildx 插件提供,Linux 服务器与 Docker Desktop 都可用;一台机器存在多个构建器时要用 --builder 指明对象。
基本信息
| 统计 | docker buildx du(-v 展开明细) |
|---|---|
| 清理 | docker buildx prune [--filter until=72h] |
| 过滤类型 | --filter type=source.local 等 |
| 作用对象 | --builder 指定构建器,默认 default |
典型使用场景
- 构建机磁盘告警排查:先确认是不是构建缓存吃掉了空间,避免误删镜像与数据卷
- CI 缓存治理:把保留窗口写成定时任务,让缓存增长有固定节奏
- 多构建器环境定位:同一台机器上有多个 builder,用 --builder 挑出占用最大的那个
- 构建随机失败排查:缓存写满磁盘会表现为构建中途失败,先看 du 结果再动别的
- 清理决策评审:清理前先导出占用明细,量化「清掉多少缓存、换来多长的首次构建」
统计与清理
统计与清理
# 查看默认构建器缓存占用
docker buildx du
# 只看汇总,不展开每条记录
docker buildx du --summary
# 保留最近 72 小时,清理更早的缓存
docker buildx prune --filter 'until=72h' -f
# 全量清理,首次重建会接近全量重跑
docker buildx prune -a -f
# 针对指定构建器操作
docker buildx du --builder ci-builder输出逐列读法
| 列 | 含义 | 正常/异常 |
|---|---|---|
| ID | 缓存记录标识,配合 -v 可看到描述 | 长期堆积大量记录是清理信号 |
| RECLAIMABLE | 该条缓存可回收的大小 | 可回收占比很高说明缓存已无引用 |
| SIZE | 该条记录占用的磁盘空间 | 总量涨到数十 GB 就该安排清理 |
| LAST ACCESSED | 最近一次被复用的时间 | 很久未访问的记录适合按 until 清掉 |
缓存命中是构建提速的主要来源,清理粒度决定「省磁盘」和「省时间」的取舍:共享构建机按 until 保留窗口比 -a 全清更可控,prune 不会动镜像、容器与卷。
buildx 缓存挂在构建器自己的存储里,切换构建器后看到的是另一套缓存,磁盘占用统计也要分别加起来。