Qu’est-ce que Docker et pourquoi il existe ?
Vous n'avez besoin d'aucune expérience de développeur pour commencer ce parcours. On part vraiment de zéro.
Imaginez une personne qui a développé une petite application sur son ordinateur. Chez elle, tout fonctionne parfaitement. Elle envoie son projet à une collègue pour qu'elle le teste, et là : rien ne marche. Un message d'erreur incompréhensible apparaît. Après une heure de recherche, la cause se révèle presque toujours la même : les deux ordinateurs n'ont pas exactement la même version d'un logiciel nécessaire au bon fonctionnement du projet.
Ce problème, extrêmement courant, porte même un surnom dans le monde du développement : « chez moi ça marche ». C'est exactement le problème que Docker a été créé pour résoudre.
Le vrai problème : l'environnement, pas le code
Une application n'est presque jamais autonome. Elle a besoin d'un langage installé dans une version précise, de bibliothèques annexes, parfois d'une base de données, souvent de réglages système particuliers. L'ensemble de ces éléments s'appelle l'environnement d'une application. Deux ordinateurs, même très semblables en apparence, ont rarement exactement le même environnement : versions différentes, logiciels installés dans un ordre différent, réglages oubliés.
Installer manuellement le même environnement sur plusieurs machines, à la main, est long, source d'erreurs, et devient vite intenable dès qu'une équipe grandit ou qu'un projet doit tourner sur un vrai serveur, différent de l'ordinateur où il a été écrit.
Ce que Docker fait, en une phrase
Docker est un outil qui permet d'empaqueter une application avec tout son environnement, pour la faire tourner exactement de la même façon, partout. Ce paquet complet, applicatif et environnement réunis, s'appelle une image. Une fois cette image créée, elle peut être exécutée sur n'importe quel ordinateur qui a Docker installé, avec la certitude que rien ne changera d'une machine à l'autre.
C'est la promesse centrale de Docker : ce qui fonctionne sur votre ordinateur fonctionnera exactement de la même façon sur celui d'un collègue, ou sur un serveur en production, à des milliers de kilomètres.
Docker se décrit lui-même comme une plateforme pour développer, envoyer et exécuter des applications, en séparant l'application de l'infrastructure sur laquelle elle tourne. Retenez surtout l'idée de séparation : votre application ne dépend plus des réglages particuliers d'un ordinateur précis.
Ce que Docker n'est pas
Docker n'est pas un langage de programmation, et il ne remplace pas un système d'exploitation. Ce n'est pas non plus un outil réservé à des professionnels expérimentés : il est aujourd'hui utilisé aussi bien par des équipes de grandes entreprises que par des personnes qui découvrent le développement, précisément parce qu'il évite d'avoir à installer une dizaine de logiciels différents sur son propre ordinateur pour tester un projet.
Le fil rouge de ce parcours
Pour que chaque notion reste concrète, vous allez construire au fil des guides une toute petite application appelée Mini-Carnet : une page web qui affiche un message de bienvenue et compte le nombre de visites. Elle est volontairement simple, pour que l'objectif reste Docker, pas l'apprentissage d'un langage de programmation. Vous allez apprendre à l'installer dans une image, à la lancer dans un conteneur, à la rendre configurable, à conserver ses données, puis à l'associer à un second service avec Docker Compose.
Vérifiez que vous avez compris
Une application fonctionne parfaitement sur l'ordinateur d'un développeur, mais plante dès qu'elle est copiée sur un autre ordinateur, avec la même version du code. Qu'est-ce que cela indique le plus probablement ?
Une différence d'environnement entre les deux machines : une version différente d'un logiciel nécessaire, une bibliothèque manquante, ou un réglage système différent. Le code est identique, mais ce qui l'entoure ne l'est pas. C'est exactement ce type de problème que Docker permet d'éviter, en empaquetant l'application avec son environnement complet.