当前位置: 首页 > 知识库问答 >
问题:

在linux/amd64主机上构建linux/arm64 docker映像

应志用
2023-03-14

我正在运行一个JenkinsAlpine 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系统上构建一个映像。

共有1个答案

拓拔欣嘉
2023-03-14

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

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] ...

这是我在詹金斯管道上使用的设置。

相关留档:

  • https://docs.docker.com/desktop/multi-arch/
 类似资料:
  • 我正在尝试从Apple M1 Macbook为x86平台的本机docker容器构建Quarkus 2.8.0,并将其部署在Linuxamd64 Portainer中。我能够构建本机映像,并在检查文件时 输出为: 然后我使用文件构建docker容器,并使用以下命令推送到我的本地注册表: 构建过程在没有错误或警告的情况下成功完成,当我在本地注册表中检查时,容器被创建。 当我试图用Portainer在我

  • 目录结构: 我尝试以下配置但不起作用: 请问如何才能达到预期效果呢?

  • 我试图用GNU C库稳定的2.5版本为RHEL5(Linux V2.6.18)构建Rust。 在运行Rust make时自动下载的Rust预构建的引导版本与glibc2.5不兼容--我得到以下错误。

  • 我正在尝试从源代码处构建chromedriver,以便在selenium for Linux中使用。我使用这本手册https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md,但是如果我从google code站点下载,在没有任何错误的情况下构建我的chromedriver时,就会减

  • 遵循下面的引导,在 Linux 上构建 Electron . Prerequisites Python 2.7.x. 一些发行版如 CentOS 仍然使用 Python 2.6.x ,所以或许需要 check 你的 Python 版本,使用 python -V. Node.js v0.12.x. 有很多方法来安装 Node. 可以从 Node.js下载原文件并且编译它 .也可以作为一个标准的用户在

  • 在Linux中,构建Electron 前提要求 磁盘可用空间>=25GB 内存>=8GB Python>=2.7.x以上版本,比如 CentOS 6.x 是基于Python 2.6.x.你可以使用 python -V命令自查版本. Node.js. 你可以在Node.js或者NodeSource下载Node.js. Clang>=3.4以上版本 GTK+开发头文件和libnotify. Ubunt