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

seb*_*mez 3 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 是否足够聪明,能够意识到我有该基础映像的旧版本,并且它会下载它的最新版本?

希望我说清楚了

Mat*_*att 6

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

docker build默认情况下将首先使用本地图像。您需要docker build --pull单独运行 ,docker pulldocker rmi IMAGE让构建使用最新的标记图像。

Docker Hub构建服务具有构建功能,可以在 Hub 中更新任何指定的映像时自动重建。