如何将图像从私人registry推送到hub.docker.com?

我正在将一个项目从一个私有registry迁移到hub.docker.com,但是我没有在计算机上标记所有的图片。

我可以通过SSH访问registry机器。

我如何将所有registry映像推送到hub.docker.com?

我认为唯一的办法就是把他们全部拉下来,然后重新贴上,然后推送到hub.docker.com

你可以使用如下的脚本来编写脚本:

for repository in $(curl -s http://localhost:5000/v2/_catalog | jq -r '.repositories[]'); do for image in $(curl -s http://localhost:5000/v2/${repository}/tags/list | jq -r '(.name + ":" + .tags[])') docker image pull localhost:5000/${image} docker image tag localhost:5000/${image} <YOUR_HUB_PREFIX>/${image} docker image push <YOUR_HUB_PREFIX>/${image} # if you need some cleanup docker image rm localhost:5000/${image} <YOUR_HUB_PREFIX>/${image} done done 

通过SSH访问您的registry机器,使用docker login在您的Docker Hub帐户内login,添加一个标签到您的图像,指向Docker Hub docker tag my_own_registry.com/image:tag user/image:tag a然后推新标签使用docker push user/image:tag

@zigarn脚本自动完成这项工作。

编辑:你评论说,你的带宽是坏的,那么你可以通过ssh访问你的registry机器,使用docker save保存图像,然后将其复制到你的机器,并通过docker load并最终将其推送到Docker Hub,如上所述。