15. Conclusion - Docker

Félicitations pour être arrivé jusqu'ici 🥳
Vous maîtrisez maintenant Docker dans tous ses aspects (autant sur la partie Réseau, que sur son architecture, son système de build etc...).

Cette formation a été conçue de sorte à couvrir toutes les parties de Docker pour que vous ayez au moins des notions, lorsque vous aurez un cas particulier à traiter sur une des facettes de Docker.

Au fil des cours, vous avez pu vous rendre compte de la puissance de Docker, de son potentiel et cela vous a peut-être ouvert le champ sur ce qui est possible de faire avec la conteneurisation.

Aller plus loin

Mais je ne vous ai pas tout dit ! Effectivement, au cours de cette formation, je n'ai pas pu aborder tout ce qui gravite autour de l'écosystème de Docker, ni certaines fonctionnalités avancée de Docker ou encore d'autres technos qui exploitent des couches encore plus hautes que Docker.

Regardons ensemble comment approfondir les connaissances que vous venez d'acquérir et explorer potentiellement des technos encore plus puissantes !

Le build multi-stage

Comme dit plus haut, si vous souhaitez maîtriser de A à Z le build d'images Docker, le build multi stage est une étape obligatoire. Je vous invite à lire l'article suivant que j'ai rédigé sur le sujet :

Comment effectuer du build multi-stage avec Docker ?
Le principe Le build multi-stage de Docker est une fonctionnalité qui permet de créer des images Docker plus légères et permettant d’effectuer des tests unitaires plus fins en utilisant plusieurs étapes de build. C’est une fonctionnalité qui permet de construire une image Docker à partir de plusie…

Maîtriser le build multi-stage est très important et utile si vous souhaitez optimiser le build de vos images Docker en gagnant de l'espace disque et en sécurisant vos images Docker.

Kubernetes

Bon... Ce sujet mériterait une formation à part entière, si ce n'est même plus 😅.
Lorsque j’évoquais plus haut le potentiel de Docker, je faisais indirectement référence à Kubernetes.

En effet, on a pu voir avec Docker comment lancer des conteneurs, avoir une approche microservices de son architecture etc.. Mais il y a un point capital qui n'a pas été abordé : le scaling.
En 2014, Google a annoncé le projet Kubernetes pour répondre notamment au besoin du déploiement des conteneurs à grande échelle tout en adaptant la capacité de l'application en augmentant ou en réduisant les ressources allouées selon les besoins. C'est le scaling horizontal.

Kubernetes utilise Docker comme gestionnaire de conteneurs par défaut, il faut le voir comme une couche plus haute et plus complexe à appréhender. Il faut savoir que Kubernetes s'installe sur un cluster afin d'avoir une architecture master/worker.

Je pourrais écrire des lignes et des lignes sur Kubernetes, sur la puissance de cette techno mais je vous laisserais faire vos recherches, sachez en tout cas que ça vaut le détour.

Podman

Encore une solution qui répond à un autre besoin, cette fois-ci de la sécurité.
Oui car il faut savoir que Docker a une particularité, c'est l'exécution des conteneurs en tant que root.

En effet, comme je l'ai dit au début de cette formation, Docker pioche ses fonctionnalités dans le kernel Linux principalement avec notamment l'utilisation des namespaces. C'est avec le USER namespace que Docker arrive à isoler un processus. Mais pour effectuer cela, le processus est lancé en tant que root. Pour palier à cette brèche de sécurité, il est possible d'installer Docker en mode Rootless. C'est ici que Podman intervient.

Podman est aussi un gestionnaire de conteneurs open-source, concurrent à Docker avec une architecture un peu différente. A la différence de Docker, Podman n'utilise pas de daemon, ce qui signifie qu'il n'a pas besoin d'un processus de démon pour gérer les conteneurs. Cela rend l'installation et l'utilisation de Podman plus simple et plus sécurisée.

Et par dessus tout, Podman exécute par défaut les conteneurs en tant qu'utilisateur non-root.

En résumé, Podman est une alternative légère et sécurisée à Docker qui utilise une architecture sans daemon et permet l'exécution de conteneurs en tant qu'utilisateur non-root. Si vous souhaitez franchir le pas et tester Podman, sachez qu'il sera très simple d'apprendre Podman car les commandes Docker sont compatibles.

Docker Swarm

Je ne vous ai pas parlé volontairement de Docker Swarm dans cette formation car son utilité baisse avec le temps, et il vaut parfois mieux de passer à Kubernetes directement.

Docker Swarm est un orchestrateur de conteneurs un peu à la manière de Docker Compose et avec une architecture en cluster rappelant Kubernetes.

Il permet de gérer ses conteneurs d'une autre manière, vu d'un autre prisme. Docker Swarm est un autre mode rattaché à Docker. Dans Docker Swarm, on ne parle plus de conteneurs mais de services (comme avec Docker Compose).

Ce qu'il faut retenir de Docker Swarm c'est qu'il est possible de déployer une stack complète sur un cluster, à la différence de Docker où les conteneurs sont sur la même machine hôte. Docker Swarm se charge également du bon fonctionnement de vos services automatiquement et il est aussi possible d'effectuer du scaling avec Docker Swarm.

Néanmoins, cela reste une techno limitée si on la compare avec Kubernetes, le projet avait même failli être abandonné début 2020.

Docker et son écosystème n'a maintenant plus de secrets pour vous ! Si vous souhaitez aller plus loin, vous savez où rechercher, et gardez en tête la philosophie DevOps.