当我的图像的基础图像更新时会发生什么?

我有基于microsoft/aspnet:4.6.2图像microsoft/aspnet:4.6.2 ,当这些(我的)图像被build立时, microsoft/aspnet:4.6.2被拉下来以build立我自己的图像。 所以,在我的本地计算机上我有microsoft/aspnet:4.6.2图像。 假设基本映像得到更新,微软发现图像有问题,并决定维护标签,所以它仍然被称为microsoft/aspnet:4.6.2但它实际上是一个不同的图像,当我build立我的拥有。

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

希望我明确自己

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

docker build将默认使用本地图像。 您可能需要运行docker build --pull ,单独docker pulldocker rmi IMAGE构build使用最新的标记图像。

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

  1. 是。 (在内部使用IMAGE ID ,而不是名称来引用基本图像)
  2. IIRC默认情况下不灵巧。 (在--pull docker build有一个--pull开关)

如果您需要最新发布的基础镜像,则在Docker构build期间使用-no-cache选项,否则docker将始终使用本地可用的镜像,除非您执行清理过程docker build