如果我将多个 docker :latest 标签推送到容器注册表会发生什么?

问题描述 投票:0回答:1

假设我将其作为 gitlab 构建管道的一部分:

- docker build -t ${CI_REGISTRY_IMAGE}/myimage:latest -t ${CI_REGISTRY_IMAGE}/myimage:$CI_VERSION .
- docker push --all-tags ${CI_REGISTRY_IMAGE}/myimage

现在我不太明白标签方面发生了什么。最新标签是否会应用于推送到容器注册表中的每个映像,以便多个映像都有此标签?或者容器注册表会确保只有一个可用的最新标签,该标签将引用已推送的最新容器映像。

另外,为什么每个人都在谈论“推送标签”,而实际上你是在推送容器镜像?如果我只推送某个图片的一个标签而不推送另一个标签,会发生什么情况,该图片会只推送一个标签吗?

docker gitlab continuous-deployment
1个回答
0
投票

假设您使用第一个命令创建这两个标签:

latest
1.0.0

这些只是指代您刚刚创建的图像 ID 的名称,例如

0e5574283393

当您推送标签时,您正在更新属于注册表中某个名称(例如

latest
)的图像 ID。如果服务器上不存在该图像 ID,则图像也会被推送。

如果稍后您使用您可能创建的相同命令构建新图像:

latest
1.0.1

现在您将拥有以下引用图像 ID 的标签:

标签 图像ID
最新 0e342283393
1.0.1 0e342283393
1.0.0 0e5574283393

所以

latest
只是应该引用最后构建的图像的名称,但实际上您可以将任何图像放在这个名称后面

© www.soinside.com 2019 - 2024. All rights reserved.