Multi-Arch-Images mit docker buildx

Multi-Arch-Images mit docker buildx

- Matt

Ich wollte ein kleines CLI-Werkzeug für den Raspberry Pi im Homelab bauen, mein Build-Rechner ist aber ein x86-Notebook. Ein Image nur für amd64 zu pushen und erst auf dem Pi zu merken, dass es nicht startet, hatte ich schon einmal.

docker buildx build --platform linux/amd64,linux/arm64 -t user/image:tag --push . baut beide Architekturen in einem Durchlauf und schreibt sie als ein Manifest in die Registry. Voraussetzung: der Builder läuft mit dem docker-container-Treiber (docker buildx create --driver docker-container --bootstrap --use), und QEMU ist per docker run --privileged --rm tonistiigi/binfmt --install all registriert.

Der Haken: Bei mehreren Plattformen ist --push Pflicht, --load funktioniert nur für eine einzelne. Und arm64 läuft unter QEMU emuliert - bei mir brauchte der Build für den Pi etwa dreimal so lange wie für amd64. Für .NET-Images ohne Dockerfile gibt es einen anderen Weg.

Docker-Dokumentation zu Multi-Platform-Images