通过示例将容器发布到 Quay
Publishing Container to Quay by Example
我正在尝试弄清楚如何将版本控制的 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>
然而这让我很困惑:
- 如果我想要我的容器 tagged/versioned,比如
1.0.0-SNAPSHOT
,或 1.0-rc
,或 2.0
或 3.1.6-G.A
,该怎么办?我在哪里指定实际标签 name/version?
- 当我 运行
docker push
命令时,Docker 如何知道要发布哪个 (tagged/versioned) 容器?
首先,值得注意的是您不会将 容器 推送到注册表。您推送 图片 。您问题中的 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
的使用通常被认为是 anti-pattern。使用 Dockerfile
创建您的新图像,这使得复制相同的配置变得更加容易(并允许您对图像的配置进行版本控制)。
我正在尝试弄清楚如何将版本控制的 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>
然而这让我很困惑:
- 如果我想要我的容器 tagged/versioned,比如
1.0.0-SNAPSHOT
,或1.0-rc
,或2.0
或3.1.6-G.A
,该怎么办?我在哪里指定实际标签 name/version? - 当我 运行
docker push
命令时,Docker 如何知道要发布哪个 (tagged/versioned) 容器?
首先,值得注意的是您不会将 容器 推送到注册表。您推送 图片 。您问题中的 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
的使用通常被认为是 anti-pattern。使用 Dockerfile
创建您的新图像,这使得复制相同的配置变得更加容易(并允许您对图像的配置进行版本控制)。