通过示例将容器发布到 Quay

问题描述 投票:0回答:2

我正在尝试弄清楚如何将版本化的 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 如何知道要发布哪个(标记/版本化)容器?
docker versioning
2个回答
7
投票
首先,值得注意的是,您不会将

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
 创建新映像,这使得重现相同配置变得更加容易(并允许您对映像的配置进行版本控制)。


0
投票
需要记住的一个警告:Quay.io 注册表项默认标记为“私有”。因此,举例来说,如果您尝试从 quay.io 中提取显示“未找到”的图像,并且您

知道它在那里,请检查公开设置。

© www.soinside.com 2019 - 2024. All rights reserved.