Docker 通过示例将容器发布到码头

Docker 通过示例将容器发布到码头,docker,versioning,Docker,Versioning,我试图找出如何将一个版本化的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 <con

我试图找出如何将一个版本化的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>
#登录到Quay.io
docker登录quay.io(现在将提示输入用户名+密码)
#拿你的
docker ps-l
#在那个容器上贴上标签
码头码头//
#现在将其发布到Quay.io
码头工人推码头//
然而,这让我非常困惑:

  • 如果我想用
    1.0.0-SNAPSHOT
    ,或
    1.0-rc
    ,或
    2.0
    3.1.6-G.A
    ,对容器进行标记/版本控制,该怎么办?在哪里指定实际的标记名/版本
  • 当我运行
    docker push
    命令时,docker如何知道要发布哪个(标记/版本化)容器

首先,值得注意的是,您没有将容器推送到注册表。你推图像。问题中的
docker commit
命令基于活动容器创建新图像

为图像分配标记时——使用更常见的[1]命令
docker tag
或使用
docker commit
——标记的格式为
[/][:]
,其中
[…]
用于表示选项组件。因此,例如,您可以在Docker Hub上标记一个以您的帐户为目标的图像,如下所示:

docker tag smeeb/webserver
这将被分配
latest
标记,因为您没有明确指定一个。要显式分配标签
awesome
,而不是
latest

docker tag smeeb/webserver:awesome
为备用注册表标记图像时,应将注册表名作为标记的一部分,如下所示:

docker tag <imageId> quay.io/smeeb/webserver
等等。使用
docker commit
创建图像时,可以使用相同的语法


[1] :我看到使用
docker标记
更常见的原因是使用
docker提交
通常被认为是一种反模式。使用
Dockerfile
创建新映像,这样可以更轻松地复制相同的配置(并允许您对映像的配置进行版本控制)。

首先,值得注意的是,您不会将容器推送到注册表。你推图像。问题中的
docker commit
命令基于活动容器创建新图像

为图像分配标记时——使用更常见的[1]命令
docker tag
或使用
docker commit
——标记的格式为
[/][:]
,其中
[…]
用于表示选项组件。因此,例如,您可以在Docker Hub上标记一个以您的帐户为目标的图像,如下所示:

docker tag smeeb/webserver
这将被分配
latest
标记,因为您没有明确指定一个。要显式分配标签
awesome
,而不是
latest

docker tag smeeb/webserver:awesome
为备用注册表标记图像时,应将注册表名作为标记的一部分,如下所示:

docker tag <imageId> quay.io/smeeb/webserver
等等。使用
docker commit
创建图像时,可以使用相同的语法


[1] :我看到使用
docker标记
更常见的原因是使用
docker提交
通常被认为是一种反模式。使用
Dockerfile
创建您的新映像,这样可以更容易地复制相同的配置(并允许您对映像的配置进行版本控制)。

非常好的回答,谢谢@larsks(+1)-假设您只能在执行
docker构建后执行
docker标记
?我想是这样的,因为在你建立一个图像之前,不会有任何可标记的东西,对吗?再次感谢!只能使用
docker tag
命令标记现有图像。您可以使用
-t
参数将标记分配给
docker build
作为
docker build
过程的一部分。回答太棒了,谢谢@larsks(+1)-假设您只能在执行
docker build
后执行
docker标记是否安全?我想是这样的,因为在你建立一个图像之前,不会有任何可标记的东西,对吗?再次感谢!只能使用
docker tag
命令标记现有图像。您可以使用
-t
参数将标记分配给
docker build
作为
docker build
过程的一部分。