在我的Dockerfile中,我可能有一个看起来像这样的步骤来安装一些软件包。
Run yum install pkg1 pkg2 -y &&\
yum -y clean all
问题在于,当我不止一次构建容器时,Docker看到这个命令没有改变,也从不运行它。它选择使用以前缓存的图层。
但是,pkg1或pkg2可能已在yum存储库中更新并需要更新,并且由于它使用的是缓存的docker层,因此容器不会收到更新的包。
我可以使用--no-cache选项构建,但这会使所有缓存层无效,这会大大减慢容器构建速度,因为通常我的yum install命令接近我的Dockerfiles的末尾。
处理此问题的最佳策略是什么?如果缓存vs repo中有不同版本的软件包,是否有任何解决方案只能使docker缓存失效?
答案 0 :(得分:0)
从" Build cache",您可以在ADD
命令之前插入COPY
或RUN
指令(虚拟文件)。
每当您想要使下一个RUN
的缓存无效时,请修改虚拟文件的内容,以及ADD
/ COPY
(与{{1}的其余部分一起修改}命令)不依赖缓存。