docker - 如何在远程注册表中重命名 Docker 镜像

标签 docker docker-registry

我的远程 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+jsonbody来自第 1 步的响应

5-享受吧!

关于docker - 如何在远程注册表中重命名 Docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33392023/

相关文章:

windows - Docker postgres 容器丢失了应该存储在卷中的数据

docker - 无法从注册表中删除 Docker 镜像

docker - docker新手,是否可以保护我的源代码并添加权限?

docker - 从 Vagrant 机器连接到 Redis Docker 容器

git - docker 中的 Jenkins 如何在另一个 docker 中访问gitlab的git-repo

docker - 将简单的 docker 镜像部署到 openshift 的问题

mysql - 在 Dockerfile(带有 MySQL 基础镜像)中,如何运行 liquibase 命令来创建架构或为数据库添加种子?

docker - 尝试将 docker 镜像推送到私有(private)存储库时出错

Docker搜索找到镜像,但是拉不出来

docker - 如何使用 minikube 部署本地 docker 注册表?