docker 清理构建缓存
有个独立的应用模块是用 Python 开发的,需要特殊的部署环境,公司没有完善的发布机制,所以是直接手动 docker build 发布的。多次发布后,发现构建缓存占用了大量磁盘空间,于是清理一波。
下面是相关的操作命令:
# 查看构建缓存
docker buildx du
按保留空间上限来控制缓存
# 仅清理当前 builder 的旧缓存,但至少保留 4GB 最近使用的缓存
docker buildx prune -f --keep-storage 4gb
--keep-storage
会按最近使用的优先级保留缓存。
若有多个 builder,请先 docker buildx ls
确认目标,再加 `--builder
docker buildx prune -f --keep-storage 1.5gb --builder
按时间阈值来控制缓存(最新一次在可预期时间内)
如果你知道“最新构建”发生在最近 N 小时/天内,就只删除更早的缓存:
# 保留最近 48 小时内用到的缓存,清理更早的
docker buildx prune -f --filter "until=48h"
--filter "until=
PS: buildx 其实是 Docker 的下一代构建工具,全称是 Docker Buildx,它是 BuildKit 的命令行前端扩展,替代了老的 docker build,默认现在的 Docker 都是用它在幕后帮你构建镜像。
简单说:
- 以前:docker build 直接用 Docker 自带的构建器,功能比较基础。
- 现在:docker build 其实会调用 BuildKit(在新版 Docker 里默认开启),而 docker buildx 则是对 BuildKit 的完整控制面板。
- 好处:可以用更先进的功能,比如多平台构建(一次打出 amd64 + arm64 镜像)、构建缓存优化、并行构建、导出为 tar 等等。
核心功能
1. 多平台构建
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest .
2. 构建缓存管理
- docker buildx du:查看缓存占用
- docker buildx prune:清理缓存(支持按时间、按保留空间上限)
- 可以把缓存推到远程,跨机器共享,减少重复构建时间
3. 更灵活的构建上下文
除了本地目录,还可以用 git://、http:// 甚至多上下文构建
4. 并行构建和更优的构建层重用
- 同时构建多个阶段,提升速度。
- 支持 --mount=type=cache 这种临时缓存挂载,不会污染镜像层。