我正在尝试弄清楚如何将版本化的 Docker 容器发布到 Quay.io,但在他们的文档中没有看到如何做到这一点。来自文档:
# Login to Quay.io
docker login quay.io (will now be prompted for username + password)
# Get your <containerID>
docker ps -l
# Tag that container by <containerId>
docker commit <containerId> quay.io/<myUsername>/<myRegistry>
# Now publish it to Quay.io
docker push quay.io/<myUsername>/<myRegistry>
然而这让我很困惑:
1.0.0-SNAPSHOT
、
1.0-rc
、
2.0
或
3.1.6-G.A
进行标记/版本控制,该怎么办?在哪里指定实际的标签名称/版本?
docker push
命令时,Docker 如何知道要发布哪个(标记/版本化)容器?
containers 推送到注册表。 您推送图像。 您问题中的 docker commit
命令根据活动容器创建新图像。为图像分配标签时——使用更常见的
docker tag
命令(更常见 [1]),或使用
docker commit
时——标签的格式为
[<registry>/]<repository>[:<tag>]
,其中
[...]
用于表示一个选项组件。 例如,您可以在 Docker Hub 上标记针对您帐户的镜像,如下所示:
docker tag smeeb/webserver
这将被分配
latest
标签,因为您没有明确指定。 要显式分配标签
awesome
而不是
latest
:
docker tag smeeb/webserver:awesome
当您为备用注册表标记映像时,请将注册表名称作为标记的一部分包含在内,如下所示:
docker tag <imageId> quay.io/smeeb/webserver
这里,
quay.io
是注册表,
smeeb/webserver
是存储库,并且您已经隐式分配了
latest
标签。 你可以直接说:
docker tag <imageId> quay.io/smeeb/webserver:1.0.0-SNAPSHOT
等等。 使用
docker commit
创建图像时可以使用相同的语法。[1]:我看到使用
docker tag
更常见的原因是,使用
docker commit
通常被认为是一种反模式。 使用
Dockerfile
创建新映像,这使得重现相同配置变得更加容易(并允许您对映像的配置进行版本控制)。
知道它在那里,请检查公开设置。