我试图弄清楚如何将版本化的Docker容器发布到Quay.io,但我没有看到如何执行此操作in their docs。来自文档:
# 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如何知道要发布哪个(标记/版本化)容器?答案 0 :(得分:2)
首先,值得注意的是,您没有将容器推送到注册表。你推图像。您问题中的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
创建新图像,这样可以更轻松地重现相同的配置(并允许您对图像的配置进行版本控制)。