我正在将一个项目从一个私有注册表迁移到hub.docker.com,但我的计算机上并没有所有标记的映像。
我可以通过SSH访问注册表机器。
问题
如何将所有注册表镜像推送到hub.docker.com?
发布于 2017-06-27 20:06:40
我认为唯一的方法是将它们全部提取出来,然后重新标记它们并推送到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发布于 2017-06-27 20:07:30
通过SSH访问您的注册表机器,使用docker login在您的Docker Hub帐户内登录,向您的映像添加指向Docker Hub docker tag my_own_registry.com/image:tag user/image:tag a的标签,然后使用docker push user/image:tag推送新标签。
@zigarn脚本自动执行此作业。
编辑:你评论说你的带宽不好,然后你可以通过ssh访问你的注册表机器,使用docker save保存你的镜像,然后将它复制到你的机器上,并通过docker load加载它,最后像上面解释的那样将它推送到Docker Hub。
https://stackoverflow.com/questions/44779757
复制相似问题