Images multi-plateformes

Une image est construite pour une architecture de processeur. Un index d'images en regroupe plusieurs, une par plateforme (linux/amd64, linux/arm64), sous un seul tag : chaque machine tire celle qu'elle peut exécuter.

Comment ça marche

docker build produit une image pour la plateforme du builder. docker buildx build --platform linux/amd64,linux/arm64 --push construit chaque plateforme et pousse un index ; le pilote docker par défaut ne sait pas le faire, crée d'abord un builder (docker buildx create --driver docker-container --use). Les plateformes étrangères tournent sous émulation QEMU, plusieurs fois plus lente ; des builders natifs ou la compilation croisée l'évitent. docker buildx imagetools inspect montre ce que contient un tag.

Ce qui casse

Exécuté sur la mauvaise architecture, un binaire échoue avec exec format error. Swarm l'évite en lisant les plateformes de l'image et en écartant du placement les nœuds où elle ne peut pas tourner : les tâches restent Pending avec unsupported platform, ou s'entassent sur les seuls nœuds compatibles, pendant que des machines arm64 moins chères ne font rien.

Dans un terminal

docker buildx create --name multiarch --driver docker-container --use
docker buildx build --platform linux/amd64,linux/arm64 \
  -t registry.shop.internal/shop/api:2.4 --push api
docker buildx imagetools inspect registry.shop.internal/shop/api:2.4

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.