当我在 CI 中构建映像时,我会使用唯一的 SHA 标签推送它。然后当我将它部署到生产中时,我想更改:latest别名以指向相同的图像,如下所示:
docker pull org/foo:34f8a342
docker tag org/foo:34f8a342 org/foo:latest
docker push org/foo:latest
Run Code Online (Sandbox Code Playgroud)
现在我想避免拉这个图像。问题是部署脚本的容器与用于构建它的容器不同,所以我在本地没有这个图像。有没有办法在 docker hub 上添加标签别名,而无需在本地拥有此图像?
mab*_*ham 17
使用实验 docker manifest命令:
docker manifest create $REPOSITORY:$TAG_NEW $REPOSITORY:$TAG_OLD
docker manifest push $REPOSITORY:$TAG_NEW
Run Code Online (Sandbox Code Playgroud)
对于私有注册表,您可能需要添加$REGISTRY/到存储库之前。
小智 5
从这里可以看出,这是不允许的,但如果问题是拉动整个镜像很慢,正如有人在评论中提到的那样,那么只需通过 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}"
Run Code Online (Sandbox Code Playgroud)
我不知道直接在 docker hub 上标记 docker 镜像。您的问题有一个解决方法,即在构建图像时用两个标签标记图像。docker build允许为一个构建创建多个标签:
docker build -t org/foo:34f8a342 -t org/foo:latest .
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2867 次 |
| 最近记录: |