我有一个使用gitlab ci管道构建的客户端网络/基本映像:
这些是我的docker存储库中的图像:如您所见,标签为最新的图像实际上是最新的图像,其图像ID(c4fba30df)与标签为version_2的图像相同。
我在基础图像之上构建另一个图像:
FROM gitlab.faccousa.net:4567/faccos/client-web/base:latest
...
...
...
昨天,我构建了上面的图像文件,看起来好像发生了以下情况:
Step 1/6 : FROM gitlab.faccousa.net:4567/faccos/client-web/base:latest
---> 7904a77c0
但是7904a77c0是version_1,因此图像ID较旧。
我对最新标签有误吗?
我知道最新消息被很多人滥用,但是在这种情况下,我觉得自己有一个配置项,始终会构建我的基础映像并用两次标记两次:
答案 0 :(得分:2)
当您docker run
映像时,或者如果构建Dockerfile FROM
映像,并且Docker认为它已经在本地拥有映像,它将使用已拥有的映像。在您的情况下,由于您已经拥有...:latest
版本,因此Docker仅使用它。它永远不会检查图像的其他版本是否可能在其他位置带有相同的标签。
最可靠的方法是永远不要在任何地方使用:latest
标签:
FROM gitlab.faccousa.net:4567/faccos/client-web/base:version_2
但是,如果您有很多相关的图像,并且基本图像有规律地发生变化,那么维护该图像可能会很麻烦。
另一种选择是告诉docker build
每次尝试--pull
基本图像
docker build --pull -t ... .
不利之处在于,如果远程存储库不可用,此构建将失败,即使基本映像未更改,构建也将花费更长的时间。
答案 1 :(得分:-1)