有个独立的应用模块是用 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 这种临时缓存挂载,不会污染镜像层。

2025-08-12T02:36:52.png

标签: docker

添加新评论