Docker "manifest list does not contain platform" in CI
A multi-arch image is a manifest list that maps platforms to per-arch manifests. When the platform the runner needs (say linux/arm64) was never built into the list, the pull fails because there is no matching entry for that architecture.
What this error means
A docker pull or run fails with no matching manifest for <platform> in the manifest list entries. The image was not built for that arch.
docker: no matching manifest for linux/arm64/v8 in the manifest list entries.Common causes
The image lacks the runner's architecture
The manifest list was built for amd64 only and the runner needs arm64 (or vice versa).
A platform-specific tag instead of a list
A tag that points at a single-arch manifest cannot serve other platforms.
How to fix it
Build and push all needed platforms
- Build the image for every architecture you run on.
- Push the combined manifest list.
docker buildx build --platform linux/amd64,linux/arm64 \
-t ghcr.io/myorg/api:1.4.2 --push .Pin the runner to an available platform
- If you cannot add the arch, run on a platform the image supports.
docker pull --platform linux/amd64 ghcr.io/myorg/api:1.4.2How to prevent it
- Build multi-arch manifests covering every runner arch.
- Verify the manifest list with
docker buildx imagetools inspect. - Keep CI runner arch and image platforms aligned.