是否可以分别推送不同架构的 docker 镜像?

时间:2021-02-23 16:33:14

标签: docker docker-buildkit buildx

据我所知,class FooClass { static foo(data: string): string static foo(data: NotAString): Error static foo(data: any): string | Error { if (typeof data === 'string') { return 'a'; } else { return new Error(); } } } let foo1: string; const bar1: string = FooClass.foo(foo1); // No error let foo2: any; const bar2: string = FooClass.foo(foo2); // No error let foo3: number; const bar3: string = FooClass.foo(foo3); // Error (displayed on the IDE) let foo4: Bar; const bar4: string = FooClass.foo(foo4); // Error (displayed on the IDE) 将使用您在 docker buildx build --push 参数中指定的架构覆盖现有的映像架构。据我了解,在使用 --platform 时,您必须同时构建和推动所有架构。但是,我知道官方的 docker 镜像使用 arm64 build farm 来构建 linux/arm64 镜像。这怎么可能?他们只使用buildx而不使用docker push吗?如果是这样,是否意味着 buildx 不会像 docker push 那样覆盖现有架构?如果我想在不同的机器上构建和推送多个架构,最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以在集群中的不同主机上使用单独的命令构建和推送,每个命令发送到不同的标签。然后在推送每个平台的所有标签后,您可以使用 docker manifest 创建一个多平台清单,该清单指向具有单个标签的所有图像。此工具目前需要启用实验性支持。

有关 docker manifest 的更多详细信息可以在文档中找到:https://docs.docker.com/engine/reference/commandline/manifest/

相关问题