从Docker注册表克隆镜像到另一个注册表

7d7tgy0s  于 5个月前  发布在  Docker
关注(0)|答案(3)|浏览(79)

我有一个私有注册表,其中包含一组图像。它可以被可视化为应用程序的存储。我的应用程序可以将这些应用程序带到其他机器上运行。为了实现这一点,我的应用程序首先从私有注册表中提取图像,然后将其复制到本地注册表以供以后使用。
步骤如下:

docker pull privateregistry:5000/company/app:tag
docker tag privateregistry:5000/company/app:tag localregistry:5000/company/app:tag
docker push localregistry:5000/company/app:tag

字符串
然后在我的网络中的另一台机器上:

docker pull localregistry:5000/company/app:tag


有没有一种方法可以有效地将镜像从一个存储库复制到另一个存储库,而无需在中间使用Docker客户端?

1hdlvixo

1hdlvixo1#

你可以使用docker save将图像保存到tar存档,然后将tar复制到新的主机,然后使用docker load将其解压缩。
阅读下面的链接更多https://docs.docker.com/engine/reference/commandline/save/

u7up0aaq

u7up0aaq2#

有没有一种方法可以有效地将镜像从一个存储库复制到另一个存储库,而无需在中间使用Docker客户端?
是的,今天有很多工具实现了这一点。RedHat一直在推广他们的skopeo,Google有crane,我自己也在使用regclient。这些工具中的每一个都直接与注册表服务器对话,而不需要Docker引擎。至少有regclient(我还没有测试其他的),这些只会复制目标注册表中还没有的层,避免了再次拉取层的需要。此外,你可以移动多平台镜像,保留所有可用的平台,如果使用docker pull,则会丢失这些平台,因为这会将映像取消引用到单个平台。

nnvyjq4y

nnvyjq4y3#

下面是使用skopeo的一行代码:

docker run --rm -it -v ${HOME}/.docker/config.json:/config.json:ro quay.io/skopeo/stable:latest copy --authfile /config.json docker://${SRC_IMAGE} docker://${DST_IMAGE}

字符串
其中SRC_IMAGEDST_IMAGE是Docker镜像的完整路径,包括注册表URL、镜像名称和标签。请注意,对于Docker Hub链接,您可能需要包括注册表URL docker.io,例如docker.io/linuxserver/wireguard:legacy
上面的命令假设你登录私有注册表的docker凭证位于标准位置~/.docker/config.json

相关问题