how to run amd64 docker images on arm64 host platform

Sabo Boz picture Sabo Boz · May 9, 2021 · Viewed 23.1k times · Source

I have an m1 mac and I am trying to run a amd64 based docker image on my arm64 based host platform. However, when I try to do so (with docker run) I get the following error:

WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested. 

When I try adding the tag --platform linux/amd64 the error message doesn't appear, but I can't seem to go into the relevant shell and docker ps -a shows that the container is immediately exited upon starting. Would anyone know how I can run this exact image on my machine given the circumstances/how to make the --platform tag work?

Answer

Nic picture Nic · May 25, 2021

Using --platform is correct. On my M1 Mac I'm able to run both arm64 and amd64 versions of the Ubuntu image from Docker Hub. The machine hardware name provided by uname proves it.

# docker run --rm -ti --platform linux/arm/v7 ubuntu:latest uname -m
armv7l

# docker run --rm -ti --platform linux/amd64 ubuntu:latest uname -m
x86_64

Running amd64 images is enabled by Rosetta2 emulation, as indicated here.

Not all images are available for ARM64 architecture. You can add --platform linux/amd64 to run an Intel image under emulation.

If the container is exiting immediately, that's a problem with the specific container you're using.