Un conteneur CMatrix pour toutes les plateformes
Objectif de cet atelier pratique
- Publier notre image de CMatrix en la rendant disponible pour toute une variété de plateformes : Intel & AMD, Mac Silicon, Raspberry Pi, S/390, etc.
De build à buildx
Jusqu'ici nous avons utilisé docker build pour construire notre image depuis
le Dockerfile :
Docker dispose par ailleurs d'une fonctionnalité buildx. C'est ce que nous
allons utiliser aujourd'hui pour construire une série d'images pour plusieurs
plateformes en les publiant sur Docker Hub.
Préparer le terrain
À ce stade, ce n'est d'ailleurs pas une mauvaise idée de s'identifier sur Docker Hub :
Pour utiliser docker buildx nous devons d'abord mettre en place une
configuration :
Ensuite nous allons invoquer la commande suivante pour utiliser cette configuration :
Rendez-vous sur Docker Hub et affichez la page d'Alpine Linux. Suivez les liens
Tags > latest et repérez le menu déroulant OS/ARCH. L'image alpine est
actuellement disponible pour huit architectures :
CMatrix pour PC et Mac Silicon
Construisons une image compatible pour les processeurs Intel & AMD
(linux/amd64) et Mac Silicon (linux/arm64/v8) et publions-la directement
sur Docker Hub :
$ docker buildx build --no-cache --platform linux/amd64,linux/arm64/v8 \
  -t kikinovak/cmatrix . --push
La rapidité de construction des images
La construction des deux images s'effectue en parallèle. Sur mon Dell XPS
13 avec un processeur Intel Core i7, la construction de l'image
linux/amd64 est beaucoup plus rapide que celle pour linux/arm64/v8. Si
vous lancez cet atelier pratique sur un Mac avec un processeur Apple, vous
verrez à l'inverse que l'image linux/arm64/v8 sera beaucoup plus rapide à
construire.
CMatrix pour S/390
Partant de là, vous pouvez très bien publier votre image pour d'autres architectures que les deux que nous venons de voir. À titre d'exemple, ajoutons l'architecture S/390 :
$ docker buildx build --no-cache --platform \
  linux/amd64,linux/arm64/v8,linux/s390x -t kikinovak/cmatrix . --push
Et voici mon image kikinovak/cmatrix pour trois architectures :
Faire le ménage
Il ne me reste plus qu'à faire un brin de ménage en supprimant tous les conteneurs que Docker a créés sous le capot pour la construction de toutes ces images :
$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - unused build cache
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted: sha256:348fa4644e9b0d2bbeff4cf70eead397cf31fa4e7cd4c39ca76c07b5b0bdf7ed
deleted: sha256:77530482fd1287e62c4776308ce13827be8e41b25434296035c71ea92fdedf5c
Deleted build cache objects:
70b5zcli4x9dsl49iu2fsjcu0
8z2jdcis8sn91bv6r16vstrg0
ml3h8ujvhd0m64xlc5ym6w2pz
otjwovz7h4m1f0vrde72vkmte
w15524xa9d5257f4ure4xmb1a
lgjp4cyxnx4t1waw8o1u4gg24
Total reclaimed space: 293.2MB
Remerciements
Cet atelier pratique s'inspire d'une série de cours de James Spurin, un formateur Linux & Open Source assez exceptionnel. Je tiens à le remercier ici.



