在 ARM 架构(比如 Raspberry Pi、Apple M 系列、ARM 云主机)上 docker pull 默认会拉取与本机架构(arm64)匹配的镜像。但有时我们需要强制拉取 x86_64(amd64) 的镜像,比如用于跨架构调试、镜像重新构建等。
Docker 在 v19.03+ 之后支持通过 --platform 参数指定目标架构。
1.1.示例:
1
| docker pull --platform linux/amd64 nginx:latest
|
或者:
1
| docker run --rm -it --platform linux/amd64 ubuntu bash
|
1.2.验证镜像架构:
1
| docker inspect nginx:latest | grep Architecture
|
二、启用跨平台模拟(qemu)
如果你想在 ARM 机器上实际运行 amd64 镜像,就不仅仅是拉取,还要能执行,这时就要用 QEMU 模拟层。
2.1.安装 QEMU 支持:
1
| docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
这会在宿主机注册多架构模拟器。
2.2.重新拉取 amd64 镜像:
1
| docker pull --platform linux/amd64 debian:bookworm
|
然后就可以运行:
1
| docker run -it --rm --platform linux/amd64 debian:bookworm bash
|
三、查看镜像多架构支持情况
1
| docker manifest inspect nginx:latest | grep architecture
|
可查看镜像中包含的多架构版本,比如:
"architecture": "amd64"
"architecture": "arm64"
四、使用 Docker Buildx 构建多架构镜像(拓展)
要自己构建同时支持 ARM 与 AMD 的镜像:
1
| docker buildx build --platform linux/amd64,linux/arm64 -t myapp:multiarch --push .
|
注意事项
| 场景 |
建议做法 |
| 只想拉取 amd64 镜像,不运行 |
仅用 --platform linux/amd64 即可 |
| 想在 ARM 上运行 amd64 镜像 |
必须安装 qemu-user-static 支持 |
| 想统一构建多架构镜像 |
使用 docker buildx |
小测试命令
1 2
| docker run --rm --platform linux/amd64 alpine uname -m
|
输出应为:
x86_64