Docker Desktop on m1 not pulling amd64 images in some cases

I’m running Docker Desktop v4.66.0 on an m1. I’m trying to pull an image which I know only publishes an amd64 image. I’m using Apple Virtualization Framework option, with Rosetta enabled.

This has worked fine in the past: docker just pulls the amd64 image and runs it with emulation.

But now I’m getting this error:

no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found

It looks like what has changed is that the image’s manifests are now published as application/vnd.oci.image.manifest.v1+json. They used to be published as application/vnd.docker.distribution.manifest.v2+json

I can still pull the old images that use application/vnd.docker.distribution.manifest.v2+json. The new OCI image manifests result in that error.

Is this expected? I don’t think our publish scripts have change: I suspect the version of docker used in our CI pipeline was upgraded, and is now defaulting to the OCI format. I can work around this by explicitly passing --platform linux/amd64 to commands that pull or run that image, but is it correct that the automatic falling back to amd64 doesn’t work anymore? Thanks.

1 Like

I surf slice different problem that Kubernetes (containerd and Rossete enabled) cannot run amd64 images generated locally, but can pull and run amd64 from remote repo (Docker Desktop v4.66).

WA: use Kubeadm instead Kind as default for Kuberntetes local cluster.