摘要
正在生成中……
在 M1 芯片的 macOS 上,构建面向 x86/amd64 架构的 Docker 镜像时,您需要注意 Docker Desktop for Mac (Apple Silicon) 默认使用 arm64 架构。您可以使用下面的方法来构建面向 x86/amd64 架构的镜像:
-
使用多平台构建
从 Docker Desktop for Mac 3.0.0 版本开始,Docker 引入了一个名为 buildx 的实验性特性,它支持针对不同的平台(包括 x86/amd64 和 arm64)构建和推送多平台镜像。您可以使用如下的命令来创建一个支持多平台构建的构建器实例:
docker buildx create --use --name mybuilder
然后,就能够通过 --platform
参数为 docker buildx build
命令指定目标平台,例如:
docker buildx build --platform linux/amd64 -t username/imagename .
-
使用 QEMU 模拟器
Docker Desktop includes a version of the QEMU emulator that lets you build and run x86 containers on Apple Silicon. You can use
docker run --platform linux/amd64 ...
command to build and run x86 containers on M1 chip.
请注意,这种方法可能无法适用于所有情况,因为 QEMU 不是原生运行,它可能会带来一定的性能损失,而且某些特殊情况下可能出现兼容性问题。在考虑在生产环境中使用时应当谨慎。
-
使用 Rosetta 2 运行 Docker
Rosetta 2 是 Apple 提供的一种转码服务,可以让您在新的 Apple Silicon Mac 上运行旧的 Intel 应用程序。你可以打开 Terminal 在 Rosetta 2 模式下运行 Docker,这样可以使得 Docker 运行在 x86 模式下,编译出来的镜像默认就是 x86/amd64 架构。
都尝试过后,建议选择适合自己的方法。不过必须注意,以上方法可能会带来性能损失,并且不能保证100%的兼容性。在进行构建之前,应该仔细评估您的需求和对应方法的适用性。