docker - 通过示例将容器发布到 docker

标签 docker versioning

我试图弄清楚如何将版本化的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-SNAPSHOT1.0-rc2.03.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/

    相关文章:

    git - Openshift v3 Online 上的构建器角色

    docker - 如何在Docker容器中挂载OpenStack容器

    java - 域模型的版本控制

    ios - 框架上的 Xcode 版本控制build设置

    cvs - 长 CVS 版本号有什么技术问题吗?

    database - 如何通过 Ant (版本控制)更新数据库?

    docker - Docker容器健康状况监控

    Docker上的MySQL远程访问

    docker - docker :构建镜像后没有此类文件或目录

    python - 如何识别未记录的 .py 模块的 Python 解释器版本?