首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将多拱码头图像复制到不同的集装箱注册中心?

如何将多拱码头图像复制到不同的集装箱注册中心?
EN

Stack Overflow用户
提问于 2021-07-28 22:21:35
回答 2查看 2.6K关注 0票数 12

有一种众所周知的方法可以将停靠者图像从一个容器注册中心复制到另一个容器注册中心。如果原始注册表是dockerhub,则典型的工作流如下所示:

代码语言:javascript
运行
复制
docker pull <image:tag>
docker tag <image:tag> <new-reg-url/uid/image:tag>
docker push <new-reg-url/uid/image:tag>

现在,在处理多架构层的图像时,您是如何处理上述内容的呢?

根据这个链接中的信息,您可以依赖buildx来构建多拱映像,在这样做的同时,您也可以将这些文件上传到任何您想要的回购中,但是如何做到这一点,而无需首先构建映像呢?

看起来buildx cli有不必要的(?)将上传过程与建筑连接在一起。有什么建议吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-29 13:31:54

虽然docker pull ...; docker tag ...; docker push ...语法是在注册表之间移动图像的简单方法,但它有几个缺点。首先,正如您所看到的,它将多平台映像解压缩为单个平台。第二种情况是,即使远程注册中心已经拥有这些层,它也会将所有层拖到对接引擎中,这使得它成为了短暂的CI工作人员的一种糟糕的方法,而这些工作人员总是需要拉出每个层。

要做到这一点,我更喜欢直接与注册表服务器而不是码头引擎本身交谈。您不需要引擎的功能来运行映像,您需要的只是注册表API。Docker已经记录了最初的注册表API和OCI最近在分布规格上使用了1.0,这应该会给我们带来一些标准化。

有各种各样的工具基于这些规格,从码头引擎本身和集装箱,到skopeo,谷歌的起重机,我也一直在研究雷格。使用regclient的regctl命令执行此操作如下:

代码语言:javascript
运行
复制
regctl image copy <source_image:tag> <target_image:tag>

结果是,不同的层、图像配置、清单和多平台清单列表将在注册表之间复制,但只对目标注册表中不存在的层进行复制。

票数 14
EN

Stack Overflow用户

发布于 2022-09-28 17:00:41

2022 (船坞内建)溶液

使用没有良好文档的内置命令docker buildx imagetools create使用--tag执行副本是可行的。

代码语言:javascript
运行
复制
# i.e.
OLD_TAG=registry.example.com/namespaced/repository/example-image:old-tag
NEW_TAG=registry.example.com/namespaced/repository/example-image:new-tag
# we can
docker buildx imagetools create --tag "$NEW_TAG" "$OLD_TAG"

参考文献

重要注意事项:目前不支持针对不同存储库执行此操作。给定的标签,如

代码语言:javascript
运行
复制
OLD_TAG=registry.example.com/namespaced/repository/example-image:latest
NEW_TAG=registry.example.com/other-repository/example-image:latest

你以错误结束,比如

代码语言:javascript
运行
复制
error: multiple repositories currently not supported

在这种情况下,我将测试实际接受答案

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68567983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档