daemon.json 通过 builder.gc 配置项实现构建缓存自动清理:启用 buildkit 后,设置 "enabled": true 和 "defaultkeepstorage": "20gb",当 /var/lib/docker/buildkit/ 缓存超限时自动删除最旧未用条目。
docker 的 daemon.json 文件本身不直接控制构建缓存大小,但可以通过启用 buildkit 并配置其垃圾回收(gc)策略来实现自动管理构建缓存空间。真正起作用的是 builder.gc 配置项,它属于 buildkit 的运行时设置,需在 daemon.json 中嵌套定义。
启用 BuildKit 并配置构建缓存自动清理
确保你使用的是 Docker 20.10+(推荐 23.0+),并已在 daemon.json 中启用 BuildKit 和 GC 策略:
{
"features": {
"buildkit": true
},
"builder": {
"gc": {
"enabled": true,
"defaultKeepStorage": "20GB"
}
}
}
-
"features":{"buildkit":true}:强制启用 BuildKit(Docker 默认已开启,但显式声明更稳妥) -
"builder.gc.enabled":true:开启构建缓存自动垃圾回收 -
"defaultKeepStorage":"20GB":当构建缓存(位于/var/lib/docker/buildkit/)占用超过 20GB 时,自动删除最久未使用的缓存条目
✅ 修改后必须重启 Docker 服务:
sudo systemctl restart docker
构建缓存实际位置与验证方式
缓存物理路径:
/var/lib/docker/buildkit/cache/(BuildKit 默认存储路径)-
查看当前缓存用量:
docker builder du -v
输出中
BUILD-CACHE行的SIZE列即为总占用 -
手动触发清理(调试用):
docker builder prune --keep-storage 15GB
注意事项
-
defaultKeepStorage只对 BuildKit 生效,传统docker build(非--platform或无#syntax=)不走此路径 - 值必须是带单位的字符串,如
"10GB"、"500MB",不能写数字或"10g"(小写单位无效) - 若未配置
builder.gc,缓存会持续增长,直到手动执行docker builder prune - 生产环境建议设为宿主机可用磁盘空间的 10%~20%,避免挤占系统盘
不复杂但容易忽略











