什么是"标签的实际用途"在码头工人?

时间:2017-09-20 16:37:43

标签: docker

例如,有一个使用

创建的存储库

$ docker tag friendlyhello john/get-started:part1

$ docker images

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
friendlyhello            latest              d9e555c53008        3 minutes ago       195MB
john/get-started         part1               d9e555c53008        3 minutes ago       195MB

现在有两张图片:friendlyhello:latestjohn/get-started:part1

我注意到这两个图像具有相同的IMAGE ID

所以我猜我的磁盘上只有一个图像文件。

如果确实如此,我为什么要像在操作系统中创建链接文件那样标记到存储库?

2 个答案:

答案 0 :(得分:2)

简而言之,标签用于方便识别图片文件系统图层的组合)。由于您的图片会随着时间的推移而发展,并且会看到添加更多图层以形成新图片,因此标记也是进行版本化的便捷方式。

当用户从 Docker Hub Google容器注册表等注册表中下载图像时,他们可以轻松地从标记中关联他们正在下载的版本。

与使用git标记版本没有什么不同,如果您熟悉它,但在这种情况下您正在跟踪图像的更改。您为映像标记发行版并将更改推送到远程存储库。

以Ubuntu为例,标签用于指代操作系统的特定版本,并且可以有很多。例如,这些都是Ubuntu的有效标记(请参阅docker hub's page):

rolling
zesty
17.04
latest
xenial
16.04
trusty
14.04

多个代码可以指向一个容器图片。使用Ubuntu:xeniallatest16.04是指向同一位置的标记,这些只是引用同一图像的多种方式。这样,因为我知道Ubuntu的latest(稳定)版本是xenial,版本号是16.04,我可以使用这些中的任何一个从Docker Hub下载此特定图像术语或标签。

同样,trustyxenial也不会指向同一张图片。它们指向可能具有共同文件系统层但在某些时候发生分歧的图像。

答案 1 :(得分:0)

您可以标记图片以确保以后能够找到它们。如果您只使用最新版本存储图像,则可以在下一个版本中覆盖它,然后使用docker prune将其删除,删除所有未引用的图像.a