我试图弄清楚如何将版本化的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-SNAPSHOT
或1.0-rc
或2.0
或3.1.6-G.A
标记/版本化我的容器怎么办?在哪里指定实际的标签名称/版本? docker push
命令时,Docker如何知道要发布哪个(标记/版本化)容器? 最佳答案
首先,值得注意的是,不要将容器推送到注册表。您推送图像。您问题中的docker commit
命令基于 Activity 容器创建新图像。
在为图像分配标签时-使用更常见的[1] docker tag
命令,或使用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
创建新图像,这使得重现相同的配置变得更加容易(并允许您对图像的配置进行版本控制)。
关于docker - 通过示例将容器发布到 docker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48874167/