我正在运行一个 Jenkins Alpine Linux AMD64docker 映像,该映像是我自己构建的,并希望linux/arm64为其添加 docker buildx 支持,以便生成多平台映像,但我不知道它应该如何工作。
当我检查支持的平台时,我得到:
+ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
default * docker
default default running linux/amd64, linux/386
Run Code Online (Sandbox Code Playgroud)
因为我在 AMD64 映像中。我读到我需要为此安装 qemu,但我不知道 buildx 如何识别它。
该文档对此相对简单: https: //docs.docker.com/buildx/working-with-buildx/
有人知道如何在 linux/amd64 映像中添加 linux/arm64 构建功能吗?
我现在看到的唯一解决方案是在实际的 arm64 系统上构建映像。
mat*_*ibi 21
要使用 buildx,请确保您的 Docker 运行时版本至少为 19.03。buildx 实际上默认与 Docker 捆绑在一起,但需要通过设置环境变量 DOCKER_CLI_EXPERIMENTAL 来启用。
export DOCKER_CLI_EXPERIMENTAL=enabled
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Linux,则需要设置 binfmt_misc。这在大多数发行版中都非常简单,但现在更容易,因为您只需运行特权 Docker 容器即可为您进行设置。
docker run --rm --privileged docker/binfmt:66f9012c56a8316f9244ffd7622d7c21c1f6f28d
Run Code Online (Sandbox Code Playgroud)
创建一个新的构建器,可以访问新的多架构功能:
docker buildx create --use --name multi-arch-builder
Run Code Online (Sandbox Code Playgroud)
然后您将能够使用以下方式构建容器:
docker buildx build --platform=[your target platform] ...
Run Code Online (Sandbox Code Playgroud)
这是我在 Jenkins 管道上使用的设置。
相关文档:
| 归档时间: |
|
| 查看次数: |
25058 次 |
| 最近记录: |