ARM 上的 x86 Docker 镜像

sec*_*499 12 docker

我有一个由 x86 计算机构建并上传到 Amazon ECR 的 Docker 映像。

我正在尝试在 ARM 机器上运行此映像;但是,我得到以下信息:

$sudo docker run 1b3ed34937e8

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
standard_init_linux.go:228: exec user process caused: exec format error
Run Code Online (Sandbox Code Playgroud)

我需要重建这个图像吗?是否可以仅使用映像而不使用 dockerfile 进行重建?

And*_*wig 11

您还可以使用 docker 内置的模拟层:

docker run --platform linux/amd64 {imagename}
Run Code Online (Sandbox Code Playgroud)

由于这是基于模拟,因此其性能不如使用主机架构运行容器。

  • 显然你可以使用环境变量“DOCKER_DEFAULT_PLATFORM”。在通过 compose 文件启动容器之前,尝试在 shell 会话中设置该环境变量: ```export DOCKER_DEFAULT_PLATFORM=linux/amd64``` 有关更多信息,请查看此 SO-issue:https://stackoverflow.com/问题/65612411/强制 docker-to-use-linux-amd64-platform-b​​y-default-on-macos (2认同)

Bep*_*e C 4

您正在尝试在不同的架构 (ARM) 上构建 x86 Docker 映像。

在 Mac 上重新构建映像,或者如果您仍在 X86 上构建映像,则可以设置目标平台

docker buildx build --platform darwin/amd64 -t app .
Run Code Online (Sandbox Code Playgroud)