【问题标题】:Confused with the concept of docker tags对 docker 标签的概念感到困惑
【发布时间】:2021-08-28 11:20:05
【问题描述】:
我正在翻阅一本书,遇到了这条线:
标签只能应用于存储库中的单个图像,而单个图像可以有多个标签。例如,Docker Hub 上的 Java 存储库维护以下标签:7、7-jdk、7u71、7u71-jdk、openjdk-7 和 openjdk-7u71。所有这些标签都应用于同一张图片。
我的问题是:为什么一张图片会有多个标签?用不同的标签标记同一张图片的目的是什么?
【问题讨论】:
标签:
docker
docker-registry
docker-tag
【解决方案1】:
在我看来主要有两个原因。
首先,这是为了方便,所以你可以给同一个图像多个别名。
但您可以为图像提供其他(特殊)标签,以便将其推送到不同的注册表。
假设(例如)您正在使用 microk8s 并且您启用了 registry 服务。要推送您的本地图像,您必须使用以前名为 localhost:32000/my-image:my-tag 的标签应用它。
在这种情况下,您的图像将有两个标签 my-image:my-tag 和 localhost:32000/my-image:my-tag。因此,要将其推送到 microk8s 注册表,您唯一需要做的就是发出命令git push localhost:32000/my-image:my-tag(将解析图像标签以获取要推送到的注册表的 URI)。
显然,上述概念可以应用于任何其他远程注册表。
【解决方案2】:
您可以将多个标签用于各种目的。例如,最受欢迎的是拥有“最新”图像。
假设您正在提取 最新 ubuntu 图像。
那将是“docker pull ubuntu:latest”。尝试拉取 ubuntu:20.04 - 你会发现你已经拉取了镜像。
注意:一段时间后,ubuntu:latest 将不再是 ubuntu:20.04,而是最新的标签。但是,您将始终拥有指向最新版本 ubuntu 映像的指针,无论您在何处使用它,都无需更改标签。