首页/云/Docker 容器速查/docker buildx du 查看构建缓存占用
镜像与构建107 条

docker buildx du 查看构建缓存占用

统计 BuildKit 构建缓存的磁盘占用,并按保留时长或全量清理;构建机磁盘水位管理用它替代手工删目录。

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

构建缓存单独统计

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 缓存挂在构建器自己的存储里,切换构建器后看到的是另一套缓存,磁盘占用统计也要分别加起来。

易错点

  • 发布高峰前 -a 全清:所有项目首次构建退化为全量重跑,发布窗口被明显拉长
  • 共享构建机上不看 du 直接用默认 prune:可能清掉别人的热缓存,让其他流水线一起变慢
  • 拿 docker system prune 当替代方案:它按镜像、容器、网络口径清理,覆盖不到 BuildKit 缓存占用
  • 清理后不做验证:清完立刻跑一次关键构建,确认缓存重建正常、磁盘水位回到预期

数据来源与参考

  • Docker 官方文档:buildx du 与 prune(docs.docker.com/build)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌