How do you detect whether an image has arm support? Or how do you run arm images?

Can someone help me figure out how to determine whether an image has ARM support? I’m on an M1 Mac, using Docker Desktop 4.19.0 (106363).

I am able to run some ARM images fine:

$ docker run --platform linux/arm64 ubuntu:latest uname -a
Linux 955ea44909d5 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

Others, many of which I expect to have arm64 support based on their documentation (Multi-platform images | Docker Documentation), such as busybox, fail with:

docker run --platform linux/arm64 busybox:latest uname -a
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
Digest: sha256:086417a48026173aaadca4ce43a1e4b385e8e62cc738ba79fc6637049674cac0
Status: Image is up to date for busybox:latest
WARNING: image with reference busybox was found but does not match the specified platform: wanted linux/arm64, actual: linux/amd64
docker: Error response from daemon: image with reference busybox:latest was found but does not match the specified platform: wanted linux/arm64, actual: linux/amd64.
See 'docker run --help'.

Running without the --platform argument returns:

$ docker run busybox:latest uname -a
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Linux a1d670601cdd 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 x86_64 GNU/Linux

When I run docker manifest inspect busybox:latest I do see an entry for arm64/v8.

      {
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 528,
         "digest": "sha256:1af0a016aaa24dd9ddf2ff0771160a68d6394eff88c9c0d5239c93a21ea06f9f",
         "platform": {
            "architecture": "arm64",
            "os": "linux",
            "variant": "v8"
         }

Running docker run --platform linux/arm64/v8 busybox:latest uname -a I get the same error.

1 Like