例如,有一个使用
创建的存储库 $ 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:latest
和john/get-started:part1
。
我注意到这两个图像具有相同的IMAGE ID
。
所以我猜我的磁盘上只有一个图像文件。
如果确实如此,我为什么要像在操作系统中创建链接文件那样标记到存储库?
答案 0 :(得分:2)
简而言之,标签用于方便识别图片(文件系统图层的组合)。由于您的图片会随着时间的推移而发展,并且会看到添加更多图层以形成新图片,因此标记也是进行版本化的便捷方式。
当用户从 Docker Hub 或 Google容器注册表等注册表中下载图像时,他们可以轻松地从标记中关联他们正在下载的版本。
与使用git标记版本没有什么不同,如果您熟悉它,但在这种情况下您正在跟踪图像的更改。您为映像标记发行版并将更改推送到远程存储库。
以Ubuntu为例,标签用于指代操作系统的特定版本,并且可以有很多。例如,这些都是Ubuntu的有效标记(请参阅docker hub's page):
rolling
zesty
17.04
latest
xenial
16.04
trusty
14.04
多个代码可以指向一个容器图片。使用Ubuntu:xenial
,latest
和16.04
是指向同一位置的标记,这些只是引用同一图像的多种方式。这样,因为我知道Ubuntu的latest
(稳定)版本是xenial
,版本号是16.04
,我可以使用这些中的任何一个从Docker Hub下载此特定图像术语或标签。
同样,trusty
和xenial
也不会指向同一张图片。它们指向可能具有共同文件系统层但在某些时候发生分歧的图像。
答案 1 :(得分:0)
您可以标记图片以确保以后能够找到它们。如果您只使用最新版本存储图像,则可以在下一个版本中覆盖它,然后使用docker prune将其删除,删除所有未引用的图像.a