我有一个私有注册表,其中包含一组图像。它可以被可视化为应用程序的存储。我的应用程序可以将这些应用程序带到其他机器上运行。为了实现这一点,我的应用程序首先从私有注册表中提取图像,然后将其复制到本地注册表以供以后使用。
步骤如下:
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客户端?
3条答案
按热度按时间1hdlvixo1#
你可以使用
docker save
将图像保存到tar存档,然后将tar复制到新的主机,然后使用docker load
将其解压缩。阅读下面的链接更多https://docs.docker.com/engine/reference/commandline/save/
u7up0aaq2#
有没有一种方法可以有效地将镜像从一个存储库复制到另一个存储库,而无需在中间使用Docker客户端?
是的,今天有很多工具实现了这一点。RedHat一直在推广他们的skopeo,Google有crane,我自己也在使用regclient。这些工具中的每一个都直接与注册表服务器对话,而不需要Docker引擎。至少有regclient(我还没有测试其他的),这些只会复制目标注册表中还没有的层,避免了再次拉取层的需要。此外,你可以移动多平台镜像,保留所有可用的平台,如果使用
docker pull
,则会丢失这些平台,因为这会将映像取消引用到单个平台。nnvyjq4y3#
下面是使用skopeo的一行代码:
字符串
其中
SRC_IMAGE
和DST_IMAGE
是Docker镜像的完整路径,包括注册表URL、镜像名称和标签。请注意,对于Docker Hub链接,您可能需要包括注册表URLdocker.io
,例如docker.io/linuxserver/wireguard:legacy
上面的命令假设你登录私有注册表的docker凭证位于标准位置
~/.docker/config.json