【问题标题】:How to add tag alias on docker hub without pulling an image如何在 docker hub 上添加标签别名而不拉取图像
【发布时间】:2018-01-21 04:06:31
【问题描述】:

当我在 CI 中构建图像时,我会使用唯一的 SHA 标签推送它。然后,当我将其部署到生产环境时,我想将 :latest 别名更改为指向相同的图像,如下所示:

docker pull org/foo:34f8a342
docker tag org/foo:34f8a342 org/foo:latest
docker push org/foo:latest

现在我想避免拉取这张图片。问题是部署脚本的容器与用于构建它的容器不同,所以我在本地没有这个图像。有什么方法可以在 docker hub 上添加标签别名,而不需要在本地拥有这个图像?

【问题讨论】:

标签: docker dockerhub


【解决方案1】:

可以看出here 是不允许的,但如果问题是拉整个图像很慢,正如有人在 cmets 中提到的那样,只需通过Docker 注册表 API

MANIFEST=$(curl -H "Accept: application/vnd.docker.distribution.manifest.v2+json" "${REGISTRY_NAME}/v2/${REPOSITORY}/manifests/${TAG_OLD}")
curl -X PUT -H "Content-Type: application/vnd.docker.distribution.manifest.v2+json" -d "${MANIFEST}" "${REGISTRY_NAME}/v2/${REPOSITORY}/manifests/${TAG_NEW}"

【讨论】:

    【解决方案2】:

    我不知道直接在 docker hub 上标记 docker 映像。您的问题有一个解决方法,即在构建图像时用两个标签标记图像。 docker build 允许为一个构建创建多个标签:

    docker build -t org/foo:34f8a342 -t org/foo:latest .
    

    【讨论】:

    • 但是在构建的时候我还不想上传这个带有:latest标签的图像,我想先将它部署到登台和测试。所以第二个标签将丢失,因为构建机器在构建完成后立即被销毁。
    • 您找到解决方案了吗?我们将做同样的事情。我们可以拉和标记,但拉很慢。
    猜你喜欢
    • 1970-01-01
    • 2017-11-28
    • 2015-08-21
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2021-07-28
    相关资源
    最近更新 更多