如何清理Docker构建缓存,仅保留指定的RUN缓存?
清理Docker构建缓存并保留指定缓存的方案
要实现清理所有构建缓存但保留/app/zopflipng-cache这个专用挂载缓存,需要通过给缓存指定唯一ID+过滤清理的方式来实现,具体步骤如下:
1. 给目标缓存添加唯一标识
修改你的Dockerfile,在--mount=type=cache参数中加入id字段,为这个缓存设置固定的唯一ID(比如zopflipng-png-cache),这样后续可以精准定位它:
RUN --mount=type=cache,target=/app/zopflipng-cache,id=zopflipng-png-cache \ python3 /app/compress_and_cache_png_images.py \ dist \ --cache-dir /app/zopflipng-cache
注:如果之前已经构建过镜像,未指定ID的缓存会有自动生成的随机ID,你可以通过
docker buildx du命令列出所有缓存,找到对应/app/zopflipng-cache的缓存ID,直接用这个ID进行后续过滤即可(无需修改Dockerfile,但下次构建如果重新生成缓存ID会失效,所以建议固定ID)。
2. 执行过滤清理命令
使用docker buildx prune(或docker builder prune,二者对默认构建器等效),通过--filter参数排除目标缓存,清理其他所有构建缓存:
docker buildx prune --filter "cache.id!=zopflipng-png-cache" -f
--filter "cache.id!=zopflipng-png-cache":表示排除ID为zopflipng-png-cache的缓存,清理所有其他缓存-f:强制执行清理,跳过交互确认步骤
验证缓存保留情况
执行清理后,可以用docker buildx du查看缓存占用,确认zopflipng-png-cache对应的缓存依然存在,其他缓存已被清理。
内容的提问来源于stack exchange,提问作者mooiamaduck
相关产品推荐
相关产品推荐

