Multi-arch Docker distribution/registry
images are published to Docker Hub as gesellix/registry. Each tag is a single
manifest spanning:
linux/amd64,linux/arm64- Windows nanoserver
ltsc2022andltsc2025(amd64)
They are built by the Build and Push multi-arch image workflow
(.github/workflows/image.yml), triggered manually via workflow_dispatch with an
image_tag input. The Linux images are built from registry-windows/Dockerfile.linux
(cross-compiled via buildx), the Windows images from registry-windows/Dockerfile
(built natively on the matching Windows runner). Both compile the registry from source
with the include_oss include_gcs build tags.
When running a Windows image, the container's base image OS must match the host's OS, see version compatibility. Otherwise you get errors like this when trying to run an image with the wrong base image OS:
The container operating system does not match the host operating system
The multi-arch manifest handles this automatically: a host pulls the variant matching its
own OS and architecture (the Windows entries carry distinct os.version values for
ltsc2022 vs ltsc2025).
- olljanat/multi-win-version-aspnet: example of creating Windows multiarch images (source: moby/moby#35247).
See RELEASE.md