Aller au contenu principal

Docker - Explique-moi comme si j'avais cinq ans - À quoi sert Docker ?

Qu'est-ce que Docker ? On utilise une analogie avec une recette de cuisine pour donner une définition simple, façon « explique-moi comme si j'avais cinq ans », des images et des containers Docker.

· 8 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Docker - Explique-moi comme si j'avais cinq ans : à quoi sert Docker ?

⚡
TL;DR

Cet article explique Docker à un public non technique avec une analogie de recette de cuisine : plutôt que de tendre à quelqu'un une liste fragile d'ingrédients et d'instructions (spécifications techniques et dépendances) qui reproduit rarement le même résultat, une image Docker c'est le gâteau fini, prêt à consommer — docker pull le récupère, docker run le sert, et tout le monde obtient exactement le même résultat, isolé de ce qui est installé par ailleurs sur la machine.

Mais c'est quoi Docker au fond ? Avec les mots les plus simples possibles, comment expliquer à quoi sert Docker ?

Prenons le cas d'une recette de cuisine comme point de départ.

Analogie culinaire​

Imaginons un instant que vous deviez écrire une recette. C'est moi qui écris la recette et c'est vous (vous êtes très, très nombreux) qui devez refaire la même chose et, à coup sûr, votre gâteau sera aussi beau et aussi bon que le mien. Exactement comme le mien, jusqu'à la dernière miette.

J'écris donc la recette sur une feuille de papier : il vous faut tant de grammes de ceci ; tant de grammes de cela. Vous devez aller acheter tout ça (une liste d'ingrédients à donner le vertige) et vous devez acheter certaines variétés (par exemple des fraises de Wépion belges et pas, évidemment, celles produites industriellement et bourrées de pesticides), et ainsi de suite.

Vous recevez de moi une très longue liste et vous devez, absolument, avoir les mêmes ingrédients que moi.

Dans ma recette, je vous dis quoi préparer en premier, puis quoi ajouter ; à quel moment précis et en quelle quantité précise. Je vous demande de cuire au même nombre de degrés, parfois au four, avec ou sans chaleur tournante, parfois à la poêle.

Voilà ; à vous de jouer.

Recette culinaire

Bien sûr, 95 % d'entre vous vont échouer (moi aussi). Parce que vous n'avez pas le temps d'aller tout acheter ; parce que vous n'avez pas les bonnes quantités ou les bonnes qualités (des fraises belges, hein ?) ; parce que vous n'avez pas le temps de courir de magasin en magasin.

Revenons au monde de l'informatique​

Ma liste d'ingrédients devient une liste de spécifications techniques (il vous faut telle version du système d'exploitation), il vous faut telles versions d'une liste délirante de dépendances ; il faut que tel logiciel soit configuré de telle manière pour pouvoir communiquer avec tel autre logiciel (par exemple Joomla doit communiquer avec MySQL sur tel port) ; il vous faut évidemment les bons droits d'accès aux fichiers, il vous faut...

Là encore, malgré une liste de spécifications parfaitement écrite, plus de 95 % d'entre vous n'arriveront pas à faire mon gâteau (moi aussi). Et pourtant j'ai pris beaucoup de temps pour vous donner une recette exhaustive.

Dans le monde du logiciel, vous pourriez dire OK, pas de souci, mets-moi tout ça sur une clé USB. Au lieu de vous envoyer une recette, je vous envoie à tous une clé USB. Peut-être que ça règlerait le problème, non ?

Clé USB

Eh bien non, mis à part le fait que ça va me coûter très cher et que ce n'est vraiment pas pratique, comment faire tourner Linux, Joomla, MySQL et plein d'autres choses sur une simple clé USB ? Avoir un bouton quelque part qui dit « Démarrer le programme » et la magie de ce bouton fait que, par exemple, Joomla tourne et que je peux accéder à mon site local.

... et Docker​

Docker simplifie tout. C'est un peu comme une machine virtuelle, mais pas vraiment.

Vous pourriez essayer de dire que Docker c'est un peu je télétravaille, je suis chez moi et je me connecte à distance à un ordinateur chez mon employeur ; c'est presque ça, mais c'est très différent.

Télétravail

C'est presque la même chose, mais c'est tellement différent. Sur votre ordinateur à la maison, vous n'avez pas les logiciels professionnels que vous utilisez, vous n'avez pas votre messagerie professionnelle, etc. La comparaison (retrouver des logiciels et des applications que vous utilisez chez vous) est très différente. Mais la comparaison (retrouver des logiciels et des configurations que vous n'avez pas sur votre PC) s'arrête là.

Docker va virtualiser un nouveau système d'exploitation sur votre ordinateur (que ce soit Linux, macOS ou Windows) : grâce à Docker, vous allez pouvoir faire tourner un Linux (Debian, Ubuntu 24.04, etc.) sur votre ordinateur Windows : si vous avez besoin d'accéder à des fichiers depuis Linux, ce seront ceux de votre ordinateur (contrairement à l'exemple ci-dessus avec votre PC professionnel). Si vous avez besoin d'utiliser une webcam, ce sera celle de votre PC, votre webcam, votre carte son, votre imprimante, etc.

Concept de virtualisation

C'est votre ordinateur, mais dans un environnement un peu spécial : une image Docker qui tourne en RAM.

Mais qu'est-ce qu'une image Docker ? C'est mon gâteau ! Non seulement j'ai écrit la recette de mon gâteau, mais surtout, je vous le donne (sous forme d'image Docker). Je l'ai mise à disposition sur internet et il vous suffit de la récupérer (docker pull) et de l'utiliser (docker run).

Prêt à y goûter pour de vrai ? Installer Docker et jouer avec PHP est la toute première étape, et Partagez des données entre votre container Docker en cours d'exécution et votre ordinateur est la deuxième — parce qu'un gâteau qu'on ne peut pas sortir du four ne sert pas à grand-chose.

Vous pouvez tous utiliser mon image. Que vous soyez un, dix, mille, un million, tout le monde aura exactement la même image que moi et elle sera prête à l'emploi. Vous n'aurez rien à faire, vraiment rien, à part l'utiliser. Je mettrai mon image à jour (une nouvelle recette, encore meilleure) ; vous la récupérez (docker pull de la nouvelle version) et c'est tout.

Qu'est-ce que vous y gagnez ? Aucun ingrédient à acheter, préparer ou cuire. Juste quelques secondes pour télécharger l'image et vous pouvez manger.

Qu'est-ce qu'on y gagne ? Tout le monde a exactement le même environnement ; si ça marche chez moi, ça marchera chez vous. Comme tout est préconfiguré, le programme qui tourne dans un environnement Docker tournera de la même façon pour tout le monde.

It works on my machine

... et avec un exemple comme Joomla​

Vous avez compris : si quelqu'un (moi ou n'importe qui) crée une image Docker pour faire tourner Joomla ; il vous suffit de récupérer l'image ; d'attendre quelques secondes et vous êtes prêt à l'utiliser. Il ne reste qu'à lancer quelques commandes (docker run ou docker compose selon la documentation officielle de l'image) et c'est parti.

Pour Joomla, l'image officielle est ici : https://hub.docker.com/_/joomla. Les instructions sont expliquées dans le chapitre « How to use this image ».

Joomla en cours d'exécution

Quelques informations en plus​

Une image Docker tourne en mémoire RAM, donc si j'éteins l'ordinateur, je perds tout. Ce n'est pas tout à fait vrai parce que Docker a un mécanisme pour stocker les informations dans des « volumes ». Si je rallume mon ordinateur, je retrouverai tout (= selon la configuration programmée).

Avec Docker, tout est isolé : je peux installer un MySQL 5.x et un vieux PHP 7.x ainsi qu'un Joomla 3.x et, pourquoi pas, avoir un deuxième site Joomla qui serait sur MySQL 5.4, PHP 8.1 et Joomla 4.4.8 et... un troisième site qui serait un WordPress et ainsi de suite. Il n'y aura aucun conflit entre versions parce que chacun sera dans « son propre espace ». Pensez juste à la misère d'avoir à installer différentes versions de PHP sur votre ordinateur... Ce n'est plus le cas avec Docker, qui rend ça super simple.

Aujourd'hui, fin 2024, il est presque possible de tout faire tourner dans Docker ; Linux bien sûr, mais aussi Windows ou macOS.

Vous pouvez aussi jouer à Doom, travailler avec Gimp, utiliser Firefox sans avoir à l'installer...

Personnellement, j'utilise Docker tous les jours pour développer (Linux bash, Python, PHP, Node, ...), pour mes bases de données (postgres, MySQL et même, pour le fun, Microsoft SQL Server), pour maintenir mon blog (Docusaurus), ...

Je n'installe plus rien sur mes machines à part Docker.

Au revoir


Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?