0

我正在运行一个 Jenkins Alpine Linux AMD64docker 映像,我正在自己构建它并希望为其添加linux/arm64docker buildx 支持,以便生成多平台映像,但我不知道它应该如何工作。

当我检查支持的平台时,我得到:

+ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS  PLATFORMS
default * docker                  
  default default         running linux/amd64, linux/386

因为我在 AMD64 图像中。我读到我需要为此安装 qemu,但我不知道 buildx 将如何识别它。

文档在这方面相对简单:https ://docs.docker.com/buildx/working-with-buildx/

有人知道如何在 linux/amd64 映像中添加 linux/arm64 构建功能吗?

我现在看到的唯一解决方案是在实际的 arm64 系统上构建映像。

4

1 回答 1

1

要使用 buildx,请确保您的 Docker 运行时版本至少为 19.03。buildx 实际上默认与 Docker 捆绑在一起,但需要通过设置环境变量 DOCKER_CLI_EXPERIMENTAL 来启用。

export DOCKER_CLI_EXPERIMENTAL=enabled

如果您使用的是 Linux,则需要设置 binfmt_misc。这在大多数发行版中非常容易,但现在更容易了,因为您可以运行一个特权 Docker 容器来为您设置它。

docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d

创建一个新的构建器,它可以访问新的多架​​构特性:

docker buildx create --use --name multi-arch-builder

然后,您将能够使用以下方法构建容器:

docker buildx build --platform=[your target platform] ...

这是我在 Jenkins 管道上使用的设置。

相关文件:

于 2022-01-24T16:19:49.330 回答