我正在阅读dockerfile文档。
我看到它提到dockerfile将更好地利用缓存来改善构建过程。
因此,文档建议如果尝试使用RUN apt-get update,请将命令合并到以下软件包安装中,例如RUN apt-get update && apt-get install curl,以避免由于缓存而安装过期的软件包。

我想知道如果我下载相同的dockerfile但我在不同时间在不同计算机上构建docker镜像该怎么办。
由于每台计算机中的本地缓存,即使他们运行相同的dockerfile,他们仍然有机会构建不同的docker容器。

我还没有遇到这个问题。只是想知道这有可能吗?如何预防呢?

谢谢。

最佳答案

Debian APT仓库是定期更改的外部资源,因此,如果您在另一台机器上docker build(或在同一台机器上重复docker build --no-cache),则可以获得不同的软件包版本。

一方面,这是很难避免的。 Debian和Ubuntu存储库都立即删除了旧版本的软件包:在同一apt-get update命令中使用installRUN的原因是,昨天的软件包索引可以引用今天的存储库中不再存在的软件包文件。原则上,您可以通过手动下载所需的每个.deb文件并手动对其进行dpkg --install来解决此问题,而跳过联网的APT层。

另一方面,这通常无关紧要。使用Debian或Ubuntu的发行版本后,软件包更新往往仅限于安全性更新和错误修复;请参阅“安全性更新”。在一个系统上与另一个系统上,您将不会获得软件包的其他主要版本。除了已缓存的apt-get update层会导致您错过您可能想要的安全更新之外,这不是我看到的问题。

关于docker - dockerfile apt-get缓存会导致不相同的docker容器吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56880225/

10-16 21:52