我的图片的基本图片更新后会发生什么?

时间:2017-11-22 01:30:27

标签: docker dockerfile docker-build

我有基于microsoft/aspnet:4.6.2的图像,当构建那些(我的)图像时,microsoft/aspnet:4.6.2被拉下来以构建我自己的图像。因此,在我的本地计算机中,我有microsoft/aspnet:4.6.2图像。让我们说基础图像得到更新,微软发现了图像的错误,并决定修复维护标记,所以它仍然被称为microsoft/aspnet:4.6.2,但它实际上是一个与我自己构建时不同的图像。

所以我有两个问题:
1.每当我的图像被拉下来时,它都会得到我建立图像时的基本图像,对吧? (这似乎很明显,但我需要检查)
2.如果我注意到(网络钩子,触发?)有一个较新版本的microsoft/aspnet:4.6.2我可以再次运行docker build命令,新图像会被拉下来吗?请记住,旧的基本映像在我的文件系统中(称为相同)。 Docker是否足够智能,意识到我有一个旧版本的基本映像,它会下载它的最新版本?

希望我清楚明白

3 个答案:

答案 0 :(得分:2)

由某人下载的图片将始终保持不变。图像依赖于特定的layers来为图像提供SHA256校验和。修改父层将修改用于引用图像的校验和,以便成为新图像。该图像更改的唯一方法是,如果图像被标记引用并且本地标记发生更改(手动或通过再次拉动图像标记)。

默认情况下,

docker build将首先使用本地图像。您需要单独运行docker build --pulldocker pulldocker rmi IMAGE才能使用最新的标记图片。

Docker Hub构建服务具有build功能,可在集线器中更新任何指定图像时自动重建。

答案 1 :(得分:1)

  1. 是肯定的。 (内部使用IMAGE ID而非名称来引用基本图像)
  2. IIRC默认不聪明。 (--pull
  3. 中有一个docker build开关

答案 2 :(得分:1)

如果您需要最新发布的基本映像,请在docker build期间使用-no-cache选项,否则docker将始终使用本地可用的映像,除非您在docker build之后进行清理