Buildx缓存不清理会持续占用数GB磁盘空间,可通过docker buildx du查看可回收条目,用docker builder prune -f清理悬空缓存,或加--all强制清空;支持按标签、时间过滤清理,也可手动定位删除残余大缓存文件夹。

Buildx构建后缓存堆积在后台,不显式清理会持续占用数GB甚至十几GB磁盘空间,尤其在反复调试多阶段构建或跨平台镜像时,【/var/lib/docker/buildx/cache/】目录下可能残留大量未标记、不可访问的缓存块。
确认Buildx缓存实际占用量
先执行 docker buildx du 查看详细缓存条目。输出中 RECLAIMABLE 列为 true 且 SIZE 显著大于 0 的条目,就是可安全清理的目标。注意末尾带 * 号的条目通常为中断构建产生的孤立缓存,优先处理。
若命令报错“command not found”,说明未启用 Buildx:运行 docker buildx install 并重启终端再试。
一键清理全部未使用Buildx缓存
执行以下命令直接清空所有 dangling(悬空)状态的 Buildx 缓存:
docker builder prune -f
该操作默认只删除 24 小时内未被访问的缓存,不会影响当前正在使用的构建器实例或活跃缓存。如需强制清除全部缓存(含近期使用过的),加 --all 参数:
docker builder prune -a -f
【此操作不可逆,且会连带删除所有中间构建上下文和元数据】,执行前请确保没有正在进行的 buildx 构建任务。
按条件精准过滤清理
方法一:保留带特定标签的缓存,其余全删
docker builder prune --filter "label!=keep=true" -f
适用于你已提前给关键缓存打标(如构建时加 --label keep=true),避免误删。
方法二:只删超过7天未访问的缓存
docker builder prune --filter "until=168h" -f
这比默认策略更保守,适合长期维护多个分支构建环境的开发者。
手动定位并删除残余大缓存文件夹
第一步:查出 Buildx 实际缓存根路径
docker info | grep "Buildx cache path"
通常为 /var/lib/docker/buildx/cache 或 ~/.docker/buildx/cache(Mac 上)。
第二步:进入该目录,按大小排序列出子项
cd /var/lib/docker/buildx/cache && du -sh */ | sort -hr | head -10
第三步:对确认无用的 ID 文件夹(如名称与 docker buildx du 输出中的 ID 完全匹配),执行强制删除
sudo rm -rf abcdef1234567890
注意:必须用 sudo,普通用户无权删除;删除前务必核对 ID 是否存在于 buildx du 输出中,否则可能破坏当前构建器状态。


















