通过示例将容器发布到 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>

然而这让我很困惑:

首先,值得注意的是您不会将 容器 推送到注册表。您推送 图片 。您问题中的 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 创建您的新图像,这使得复制相同的配置变得更加容易(并允许您对图像的配置进行版本控制)。