首页 > 解决方案 > 构建多架构 Docker 镜像时如何设置架构?

问题描述

假设我有一个foo为许多不同的拱门(例如,、等)构建foo-arm64foo-amd64应用程序。我想制作非常小的 Docker 图像,如下所示:

FROM scratch

ARG ARCH
ADD foo-$ARCH /bin/foo

ENTRYPOINT [ "/bin/foo" ]

但是,当我构建图像时:

docker build -t foo:arm64 --platform linux/arm64 --build-arg ARCH=arm64 .

架构不正确:

docker inspect foo:arm64 | grep Arch
        "Architecture": "amd64",              # should be arm64??

图像拱门似乎总是来自主机。当与主机不同时,如何构建具有正确架构的 Docker 映像?官方 Docker 镜像是如何做到这一点的?

标签: dockermultiarch

解决方案


使用docker buildx命令代替docker build -t命令。Docker build 仅创建具有相应平台的 docker 映像。

有关更多信息,请参阅文档:https ://www.docker.com/blog/multi-arch-images/


推荐阅读