如何将图像从私有注册表推送到 hub.docker.com?
How to push image from private registry to hub.docker.com?
我正在将项目从私有注册表迁移到 hub.docker.com,但我的计算机上没有所有标记的图像。
我可以通过 SSH 访问注册表机器。
问题
如何将我的所有注册表映像推送到 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 访问您的注册表机器,使用 docker login
登录您的 Docker Hub 帐户,为您的图像添加一个指向 Docker Hub docker tag my_own_registry.com/image:tag user/image:tag
然后使用 docker push user/image:tag
.
推送新标签
@zigarn 脚本自动执行此作业。
编辑:您评论说您的带宽不好,那么您可以通过 ssh 访问您的注册表机器,使用 docker save
保存您的图像,然后将其复制到您的机器并通过 [=14= 加载它] 最后将其推送到 Docker Hub,如上所述。
我正在将项目从私有注册表迁移到 hub.docker.com,但我的计算机上没有所有标记的图像。
我可以通过 SSH 访问注册表机器。
问题
如何将我的所有注册表映像推送到 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 访问您的注册表机器,使用 docker login
登录您的 Docker Hub 帐户,为您的图像添加一个指向 Docker Hub docker tag my_own_registry.com/image:tag user/image:tag
然后使用 docker push user/image:tag
.
@zigarn 脚本自动执行此作业。
编辑:您评论说您的带宽不好,那么您可以通过 ssh 访问您的注册表机器,使用 docker save
保存您的图像,然后将其复制到您的机器并通过 [=14= 加载它] 最后将其推送到 Docker Hub,如上所述。