我试着用码头来建立一个多拱的形象。我正在使用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 .docker load --input /tmp/abc-arm64.tardocker load --input /tmp/abc-amd64.tardocker 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:{}]
是否有一种方法可以在不将单个图像推送到远程码头注册中心的情况下缝制多拱图像?
发布于 2022-10-05 11:42:02
不确定您是否有意构建tar文件,但是如果您想一次构建多平台映像并将它们推送到您的注册表,您可以使用一个命令:
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)“。
https://stackoverflow.com/questions/72379218
复制相似问题