Docker注册表空间如果从同一Docker文件中推出两个图像



当从同一docker文件创建图像时,Docker注册服务器空间方面发生了什么。因此,例如,在下面的情况下,如果我用标签1.0推动图像,然后用同一docker文件创建另一个图像,然后用标签1.1推动。它将在Docker注册表上占用任何其他空间吗?

docker build . -t myRegistry.com/myImage:1.0
docker push myRegistry.com/myImage:1.0
docker build . -t myRegistry.com/myImage:1.1
docker push myRegistry.com/myImage:1.1
docker build . -t myRegistry.com/myImage:1.2
docker push myRegistry.com/myImage:1.2
docker build . -t myRegistry.com/myImage:1.3
docker push myRegistry.com/myImage:1.3

在您的示例案例中,容器注册表将使用相同的图像,该图像由图像的SHA256值(也称为IMAGE ID(计算出来 - 标签仅是该唯一唯一的别名图像。

这是一种一对多的关系,即,您可以将许多标签指向同一图像。您可以使用docker images --no-trunc查看图像ID的全部值。(请注意,如果您使用"最新"或"开发"之类的常见标签存在一致性问题,则这很有用,因为您不能确定它实际上是哪个图像,除非您使用SHA256值。(

对于在不同的机器/环境上构建,使用相同文件的相同dockerfile may 会导致相同的哈希,但这取决于许多变量,例如您的依赖性的动态性,如果时间戳已更改,等等

@henry提到的,这进一步适用(主要落后于幕后(,适用于图像的各个层:

docker图像具有中间层可增加可重复性, 减少磁盘使用情况,并通过允许每个步骤加快Docker构建 被缓存。这些中间层默认不显示。

请参阅文档

btw,要查看A 容器的SHA256值,请查看它来自哪个 image ,您可以inspect IT,例如docker inspect --format='{{index .RepoDigests 0}}' mongo:3.4-jessie

最新更新