DockerVoici la troisième et dernière partie du TP Docker dans le cadre de la formation Docker. Dans mon précédent article nous avons construit une image de conteneur optimisée de l’économiseur d’écran CMatrix basée sur Alpine Linux. Aujourd’hui nous allons publier notre image en la rendant disponible pour toute une variété de plateformes : Intel & AMD, Mac Silicon, Raspberry Pi, S/390, etc.

Jusqu’ici nous avons utilisé docker build pour construire notre image depuis le Dockerfile :

$ ls
Dockerfile
$ docker build -t kikinovak/cmatrix .

AstuceDocker 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.

À ce stade, ce n’est d’ailleurs pas une mauvaise idée de s’identifier sur Docker Hub :

$ docker login -u kikinovak
Authenticating with existing credentials...
Login Succeeded

Pour utiliser docker buildx nous devons d’abord mettre en place une configuration :

$ docker buildx create --name buildx-multi-arch
buildx-multi-arch

Ensuite nous allons invoquer la commande suivante pour utiliser cette configuration :

$ docker buildx use buildx-multi-arch

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 :

Alpine Linux OS/ARCH

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

Docker Buildx Multi-Arch

AstuceLa 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.

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 :

CMatrix Multi-Arch

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.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Formation

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *