Skip to content
Latchkey

How to Create a Multi-Arch Manifest List With docker manifest

When each architecture is built and pushed separately, docker manifest create stitches them into one tag that clients resolve to their platform.

If you build arm64 on a native arm runner and amd64 on an amd64 runner, you push two tags, then use docker manifest create to publish a single multi-arch tag pointing at both.

Steps

  • Push each arch under its own tag (for example :amd64 and :arm64).
  • Run docker manifest create referencing both tags.
  • Push the manifest with docker manifest push.

Terminal

Terminal
# After both per-arch images are pushed:
docker manifest create ghcr.io/acme/app:1.0 \
  ghcr.io/acme/app:1.0-amd64 \
  ghcr.io/acme/app:1.0-arm64

docker manifest annotate ghcr.io/acme/app:1.0 \
  ghcr.io/acme/app:1.0-arm64 --arch arm64

docker manifest push ghcr.io/acme/app:1.0

Gotchas

  • docker manifest is experimental; enable it with DOCKER_CLI_EXPERIMENTAL=enabled on older Docker.
  • Buildx with --platform builds and pushes the manifest in one step, so reach for docker manifest only when arches are built separately.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →