首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker buildx为不同的体系结构独立构建图像的清单。

Docker buildx为不同的体系结构独立构建图像的清单。
EN

Stack Overflow用户
提问于 2022-05-25 14:11:43
回答 1查看 361关注 0票数 1

我试着用码头来建立一个多拱的形象。我正在使用github行动作为CI。使用buildx+qemu构建相当慢。因此,我试图在主机上构建具有目标体系结构的单个映像,然后缝合创建的清单以创建清单列表并推送图像。

我运行了以下命令来实现这一点

  • docker buildx build --progress=plain --platform linux/arm64 -o type=oci,dest=/tmp/abc-arm64.tar -t abc-arm64:1.2.0 -f Dockerfile .
  • docker buildx build --progress=plain --platform linux/amd64 -o type=oci,dest=/tmp/abc-amd64.tar -t abc-amd64:1.2.0 -f Dockerfile .
  • 从不同的作业上传这些tar文件,然后下载到一个作业中。
  • docker load --input /tmp/abc-arm64.tar
  • docker load --input /tmp/abc-amd64.tar
  • docker buildx imagetools create --dry-run -t abc:1.2.0 abc-amd64:1.2.0 abc-arm64:1.2.0

但我还是会犯错误

error: multiple repositories currently not supported, found map[docker.io/library/abc:{} docker.io/library/abc-amd64:{} docker.io/library/abc-arm64:{}]

是否有一种方法可以在不将单个图像推送到远程码头注册中心的情况下缝制多拱图像?

EN

回答 1

Stack Overflow用户

发布于 2022-10-05 11:42:02

不确定您是否有意构建tar文件,但是如果您想一次构建多平台映像并将它们推送到您的注册表,您可以使用一个命令:

代码语言:javascript
复制
docker buildx build \
    --platform 'linux/amd64,linux/arm64' \
    -f 'Dockerfile' \
    -t yourregistry/abc:1.2.0 \
    --push \
    .

它将为amd64和arm64构建和推送两个图像,并创建一个带有1.2.0标记的图像列表。当您以后想要在特定的平台上使用一个映像时,按一下"yourregistry/abc:1.2.0“将自动解析该映像供平台下载。

P.S.“创建”在v0.9.0中增加了对多个存储库的支持:"buildx创建命令现在可以创建新的多平台映像,即使源子映像位于不同的存储库或注册表(#1137)“。

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

https://stackoverflow.com/questions/72379218

复制
相关文章

相似问题

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