在Dockerfile中通过yum检查更新的包

在我的Dockerfile中,我可能有一个看起来像这样的步骤来安装一些软件包。

Run yum install pkg1 pkg2 -y &&\ yum -y clean all 

问题是,当我不止一次地构build容器的时候,Docker看到这个命令没有改变,也没有运行它。 而是select使用以前caching的图层。

但是,pkg1或pkg2可能已经在yum版本库中进行了更新,需要更新,并且由于它使用了caching的docker图层,所以容器不会收到更新的软件包。

我可以使用–no-cache选项来构build,但是这会使所有的caching层失效,因为通常我的yum install命令已经接近Dockerfiles的末尾,这会大大降低容器的构build速度。

处理这个问题的最佳策略是什么? 是否有任何解决scheme,只有无效的dockercaching,如果有一个不同版本的包在caching与回购?

从“ Build cache ”中,可以在这些RUN命令之前插入一个ADDCOPY指令(一个虚拟文件)。

无论何时,如果要使下一个RUN的caching失效,请修改虚拟文件的内容,并且ADD / COPY (与其他Dockerfile命令一起)将不依赖于caching。