定期清理 docker 构建缓存应优先使用 docker builder prune --filter 配合定时任务,支持按时间(如 until=72h)或时间戳过滤清理,可结合 system prune 彻底清除关联资源,并通过 docker builder du -v 验证效果。

定期清理 Docker 无用的临时缓存层,核心是借助内置命令自动化执行,而不是依赖手动干预或直接操作文件系统。Docker 的构建缓存(build cache)以不可见对象形式存在,无法用 ls 或 du 直接查看单个缓存项,但可通过过滤条件精准控制清理范围。
用 docker builder prune 按时间自动清理
Docker 20.10+ 版本起,builder prune 支持时间过滤,是最推荐的定期清理方式:
-
docker builder prune --filter "until=72h":删除 3 天前创建的所有构建缓存(含中间层、构建上下文等) -
docker builder prune --filter "before=2026-07-15T00:00:00":按具体时间戳清理 - 搭配
-f可跳过确认,适合脚本调用:docker builder prune -f --filter "until=168h"
结合 system prune 清理关联资源
构建缓存常与悬空镜像、停止容器共存,一并清理更彻底:
-
docker system prune -f:默认清理构建缓存 + 停止容器 + 悬空镜像 + 未用网络 - 加
-a可扩展清理所有未被引用的镜像(含带标签但未运行的),但需确认业务无依赖 - 不建议日常加
--volumes,除非明确知道哪些卷已废弃
配置定时任务实现真正“定期”
把清理命令写入系统级计划任务,避免遗忘:
- Linux 上用
cron,例如每天凌晨 2 点执行:0 2 * * * /usr/bin/docker builder prune -f --filter "until=168h" > /dev/null 2>&1 - 若同时清理镜像和容器,可合并为:
0 2 * * * /usr/bin/docker system prune -f > /dev/null 2>&1 - 注意确保执行用户有 Docker 权限(通常需加入
docker用户组)
验证清理效果和保留必要缓存
清理后建议快速确认是否影响后续构建效率:
- 用
docker builder du -v查看当前构建缓存总大小(单位 MB/GB) - 观察下次
docker build是否仍能复用基础层(如FROM ubuntu:22.04)——说明底层缓存未被误删 - 若频繁构建同一项目,可保留最近 24 小时缓存:
--filter "until=24h",平衡空间与速度











