在arm架构上拉去amd64架构容器镜像

在 ARM 架构(比如 Raspberry Pi、Apple M 系列、ARM 云主机)上 docker pull 默认会拉取与本机架构(arm64)匹配的镜像。但有时我们需要强制拉取 x86_64(amd64) 的镜像,比如用于跨架构调试、镜像重新构建等。


一、使用 --platform 参数(推荐做法)

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
# 测试 QEMU 是否工作正常
docker run --rm --platform linux/amd64 alpine uname -m

输出应为:

x86_64