通过示例将容器发布到Quay

时间:2018-02-19 21:05:55

标签: docker versioning

我试图弄清楚如何将版本化的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-SNAPSHOT1.0-rc2.03.1.6-G.A怎么办?我在哪里指定实际的标签名称/版本?
  • 当我运行docker push命令时,Docker如何知道要发布哪个(标记/版本化)容器?

1 个答案:

答案 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创建新图像,这样可以更轻松地重现相同的配置(并允许您对图像的配置进行版本控制)。