Aller au contenu
gaetancottrez.dev

Docker : Pourquoi les développeurs doivent l’utiliser ?

Published:le  à 15:51 | (7 min de lecture)
Docker : Pourquoi les développeurs doivent l’utiliser ?

Table des matières

Ouvrir table des matières

Docker : Pourquoi les développeurs doivent l’utiliser ?

Docker, voilà un mot qui revient souvent sur le web quand on est développeur et que l’on fait de la veille technologique. Il y a déjà pas mal d’articles qui expliquent ce que c’est mais rapidement pour les gens vivant dans une grotte, Docker est un système de virtualisation par conteneur visant juste à faire tourner une application ou un service.

Les conteneurs

Si la notion de conteneurs se démocratisa avec l’arrivée de Docker, il faut savoir que ce concept en réalité n’a pas été créé par Docker. Linux a en fait déjà un système de conteneurs qui s’appelle LXC (Linux Containers) sur lequel Docker s’est d’ailleurs initialement basé. Un conteneur est une boîte qui va être intégralement isolée du système d’exploitation dans laquelle on installera une application ainsi que toutes les librairies nécessaires au bon fonctionnement de celle-ci. Il sera alors facile de distribuer son application qui ne sera pas dépendante de votre système d’exploitation.

Les avantages de ce concept

Nos applications se complexifient avec le temps et nous sommes contraints d’installer de nombreuses librairies pour faire fonctionner correctement nos applications. Pour prendre un exemple simple, mon futur site Internet aura plusieurs besoins pour fonctionner : mettre un Apache en serveur Web, un redis en serveur de cache, un MySQL pour avoir une base de données, un PHP 7 avec différentes librairies en interpréteur de code.

Sans conteneur, ceci va avoir des conséquences pour les administrateurs système qui vont devoir refaire la configuration des machines (éventuellement via un infogéreur externe) et tous les développeurs vont devoir installer l’environnement (ce qui se complexifie quand les développeurs ne travaillent pas sur le même système d’exploitation).

Docker explication

Quel intérêt pour le développeur ?

Comme beaucoup de monde, vous avez certainement utilisé un programme tout en un du style WampServer. Là vous avez vu les limites de ce genre de solution et vous vous êtes mis à la virtualisation pour déployer votre configuration (et au passage vous approchez d’une solution similaire à un environnement de production). Vous déployez une nouvelle VM, vous installez votre OS, vous faites les mises à jour, vous installez votre serveur web, vous installez php, et vous configurez le tout pour que tout fonctionne correctement.

Résultat : c’est long, ça prend de la place et c’est chiant à faire. En plus si vous devez faire cohabiter 2 environnements (par exemple 2 versions de PHP), ça commence à être galère car soit vous allez utiliser la même machine soit en déployer une nouvelle pour ne pas exploser votre environnement

Docker résout ses problématiques et permet de remédier à ça. Comment me direz-vous ? Grâce à pas mal de petites choses qui au final vont faire beaucoup.

Orchestration des conteneurs

Idéalement, on génère un container pour résoudre un service. Donc si vous souhaitez un environnement Apache, PHP et MySQL il vous faudra alors 3 conteneurs. L’avantage de séparer chaque service dans un conteneur c’est de pouvoir mieux maîtriser son environnement. En effet, si vous souhaitez changer de version de PHP vous changerez qu’un seul conteneur sans altérer le reste de votre environnement.

Chaque conteneur est logiquement indépendant, un conteneur ne voit pas les autres conteneurs mais il est possible de les faire communiquer ensemble. En fait, on peut faire communiquer que certains conteneurs entre eux si on le souhaite. Imaginons que vous avez 4 conteneurs de lancés : A, B, C et D. Un lien est créé entre A et B et un autre entre C et D. Les conteneurs A et B pourront communiquer et se voir, idem pour C et D. Mais ces 2 pairs ne pourront jamais se voir ni même communiquer ensemble, ce qui est fort intéressant lorsque que l’on veut faire de l’environnement expérimental.

Cependant lancer des conteneurs en les paramétrant et en les liant entre eux, tout cela en ligne de commande n’est pas chose aisée mais surtout répétitive. Heureusement, les gestionnaires de Docker ont pensé à ça en créant le Dockerfile basé sur le YAML. Ce fichier de Docker permet de faire tout ce qui est possible en ligne de commande. De la création de l’image à la réalisation de chaque conteneur de votre stack. Vous pouvez ainsi orchestrer votre stack depuis ce fichier : paramétrage d’un conteneur, Nommage de chaque conteneur, définition des liens entre eux.

Un exemple de stack web Apache, PHP, MySQL

Vous pouvez retrouver un exemple de stack web contenant un serveur de base de données, un apache, un php 7.0 ainsi qu’un serveur MailDev sur mon GitHub pour vous donner une idée du potentiel de Docker.

Je vous conseille également d’étudier ce sujet en consultant les nombreux articles sur le web si vous vous décidez de passer le cap.

Partager cet article :

Vous pourriez aussi aimer ❤️

Github Copilot : Mon avis après 2 mois d'utilisation

Github Copilot : Mon avis après 2 mois d'utilisation

Comprendre les tests unitaires pour enfin en faire

Comprendre les tests unitaires pour enfin en faire