如何智能清理Docker对象且保留构建缓存以降低构建耗时
Docker 构建机安全清理方案(保留构建缓存)
虚悬镜像清理操作说明
你提到的定时任务命令 docker rmi $(docker images -q -f dangling=true) 完全不会删除构建缓存,可以放心执行。
虚悬镜像指没有标签、也未被任何其他镜像引用的顶层镜像,通常由构建失败、镜像重复打标产生,和Docker构建过程生成的中间缓存层是完全独立的对象类型,清理虚悬镜像不会对构建加速效果产生任何负面影响。
其他可安全执行的清理操作
以下操作均不会触及构建缓存,可直接加入定时任务执行:
- 清理已停止的冗余容器
执行命令:docker container prune -f
构建过程中产生的临时停止容器不会被后续构建复用,清理后无任何副作用。 - 清理未被任何容器关联的匿名卷
执行命令:docker volume prune -f
匿名卷多为临时运行容器时自动生成的存储对象,没有容器关联时无留存价值,也不涉及构建缓存数据。 - 清理未被使用的自定义网络
执行命令:docker network prune -f
冗余自定义网络仅占用极小的系统资源,清理后不会对构建流程产生影响。 - (可选)按保留周期裁剪旧构建缓存
如果后续出现构建缓存占用磁盘过高的情况,可仅清理超过指定时间未被使用的旧缓存,比如保留最近7天的构建缓存:
执行命令:docker builder prune -f --filter "until=168h"
高风险操作需规避
以下操作会误删构建缓存,导致构建耗时大幅上升,需避免执行:
- 不要使用带
-a参数的镜像清理命令,比如docker image prune -a,会删除所有未被使用的镜像,包含构建中间缓存层 - 不要执行不带过滤规则的
docker system prune,默认会清理所有未被使用的Docker对象,包含构建缓存
内容的提问来源于stack exchange,提问作者Ezop
相关产品推荐
相关产品推荐

