Voici une feature de Docker builtx des plus sympathiques. On peut en une
seule commande lancer la construction d’images Docker à destination de plusieurs
architectures comme les raspberry p1 et même les instances AWS A1.
Pour rappel buildkit est le nouveau moteur de construction d’images intégrant
pas mal de nouvelles fonctionnalités.
Et celle-ci vaut le détour. Surtout si vous utilisez plusieurs
architectures, linux/amd64, linux/arm64, ou darwin/amd64, … au sein de votre
infrastructure.
Mise en place du builder
Le générateur est en fait une image, utilisant les fonctionnalités QEMU, qui
tourne au sein d’une instance Docker. Une feature que l’on retrouve sur la
version de Docker Desktop d’ailleurs mais caché.
Faisons le test, bien sûr dans une machine
vagrant. En premier, il faut lancer une image
permettant d’installer l’outillage nécessaire sur la machine hôte.
La messe est dite en sortie, on pourra avoir des builds à destination de toutes
ces archis.
Ensuite vient la création du builder. Pour utiliser une registry perso, il faudra
utiliser un fichier de config. Plus d’infos
ici ↗ Pour
appeler ce fichier, il faudra ajouter --config=/path/to/config.toml
Impact : Je n’utiliserai donc pas l’option --push car pour le moment je
n’ai pas réussi à le faire tourner en local. L’option --load n’accepte pas
pour le moment de lancer plusieurs builds en //.
Nous allons utiliser une image plutôt simple :
Allez, on lance le build (ca va prendre un peu de temps la première fois):
On lance une deuxième plateforme :
Allez, on vérifie :
Si vous avez une registry, vous pouvez utiliser l’option --push avec plusieurs
plateformes dans la même ligne de commande. Pour les autres un simple script fera
l’affaire.
Pour améliorer les perfs on peut ajouter plusieurs nœuds à votre builder
avec la fonction --append.