当我的图像的基础图像更新时会发生什么?
我有基于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 pull
或docker rmi IMAGE
构build使用最新的标记图像。
Docker Hub构build服务具有构buildfunction,可在集线器中更新任何指定映像时自动重build。
- 是。 (在内部使用
IMAGE ID
,而不是名称来引用基本图像) - IIRC默认情况下不灵巧。 (在
--pull
docker build
有一个--pull
开关)
如果您需要最新发布的基础镜像,则在Docker构build期间使用-no-cache选项,否则docker将始终使用本地可用的镜像,除非您执行清理过程docker build