我的远程 docker 注册表中有一个镜像:
xx.xx.xx.xx:5000/library/ruby:2.2.1
是否有快速方法或现有命令来重命名它?
我知道我可以通过将docker pull
执行到本地并通过docker tag
重命名它,然后再次docker push
来实现这一点。
docker pull xx.xx.xx.xx:5000/library/ruby:2.2.1
docker tag xx.xx.xx.xx:5000/library/ruby:2.2.1 xx.xx.xx:5000/library/new_name:latest
docker push xx.xx.xx.xx:5000/library/new_name:latest
但是由于拉取和推送图像需要时间,我想知道是否有快速的方法来重命名它?
最佳答案
有两种不同的方法:
a) 如果您只想更改标签:
答案https://stackoverflow.com/a/38362476/8430173仅适用于更改TAG
b) 如果您也想更改存储库名称:
非常感谢this ,我也改变了repoName!
(在他的 Github 项目的帮助下):
1- 获取 list (在 v2 架构中)
2-在新的仓库中发布每个layer.digest
3-post config.layer
4-将整个 list 放入新仓库
详细信息:
1- GET 来自 reg:5000/v2/{oldRepo}/manifests/{oldtag}
的 list 与 accept
标题:application/vnd.docker.distribution.manifest.v2+json
2- 每层:POST reg:5000/v2/{newRepo}/blobs/uploads/?mount={layer.digest}&from={oldRepoNameWithaoutTag}
3-发布 reg:5000/v2/{newRepo}/blobs/uploads/?mount={config.digest}&from={oldRepoNameWithaoutTag}
4- PUT reg:5000/v2/{newRepo}/manifests/{newTag}
与 content-type
标题:application/vnd.docker.distribution.manifest.v2+json
和body
来自第 1 步的响应
5-享受吧!
关于docker - 如何在远程注册表中重命名 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33392023/