Aller au contenu
Tendances

Épisode 01 / 9Les bases20 min

Comprendre Docker

Avant la première commande, les cinq mots qui reviennent partout — image, conteneur, registre, port, volume — et ce qui distingue un conteneur d’une machine virtuelle.

Vous êtes sur

Dans cet épisode

  • Distinguer une image d’un conteneur, et savoir d’où viennent les images
  • Comprendre pourquoi un conteneur est plus léger qu’une machine virtuelle, et moins isolé
  • Lire une commande docker run et reconnaître chacune de ses parties

« Chez moi, ça marche. » Tous ceux qui ont installé un logiciel sur deux ordinateurs différents connaissent cette phrase. Une application dépend d’une version précise d’un langage, de bibliothèques, de réglages… et il suffit qu’un seul de ces éléments diffère pour qu’elle refuse de démarrer.

Docker règle ce problème en livrant l’application avec tout ce dont elle a besoin, dans un paquet standard qui s’exécute de la même façon partout. Cet épisode ne demande aucune installation : on pose le vocabulaire, et c’est lui qui rendra la suite facile.

Du registre au conteneur

Trois mots décrivent tout le trajet d’une application Docker.

sur Internet Registre Docker Hub nginx alpine et des milliers d’autres pull sur votre ordinateur Image nginx:alpine · lecture seule réglages Nginx Alpine Linux run Conteneur « web-demo »en cours Conteneur « essai »en cours Conteneur « ancien »arrêté
L’image se télécharge une fois ; chaque docker run en tire un nouveau conteneur.
  • Le registre est un catalogue en ligne. Le plus connu, Docker Hub, héberge les images officielles de Nginx, PostgreSQL, Nextcloud et de milliers d’autres logiciels.
  • L’image est le modèle, en lecture seule. Elle est faite de couches empilées — un petit système de base, le logiciel, ses réglages — et porte un nom suivi d’un tag : dans nginx:alpine, nginx est le logiciel et alpine la variante, construite sur Alpine Linux, un système minuscule.
  • Le conteneur est une image en cours d’exécution. Docker y ajoute une fine couche d’écriture, qui disparaît quand on supprime le conteneur.
ImageConteneur
NatureUn modèle figéUne exécution de ce modèle
Modifiable ?Non, lecture seuleOui, mais seulement le temps de sa vie
Combien ?Une seule suffitAutant qu’on veut, depuis la même image
Exemplenginx:alpineweb-demo, qui fait tourner Nginx

Un tag oublié vaut latest. Méfiez-vous de ce nom : ce n’est qu’une étiquette choisie par l’éditeur, pas une garantie d’avoir la dernière version.

Un conteneur n’est pas une machine virtuelle

C’est la confusion la plus fréquente, et elle a des conséquences sur la sécurité.

Machines virtuelles Application dépendances système complet Application dépendances système complet Hyperviseur Système hôte Matériel Conteneurs App dépendances App dépendances App dépendances Docker Système hôte · noyau partagé Matériel
Une machine virtuelle transporte tout un système ; un conteneur n’emporte que l’application et ses dépendances, et emprunte le noyau de l’hôte.
Machine virtuelleConteneur
DémarrageSouvent une minuteUne seconde ou moins
TaillePlusieurs gigaoctetsQuelques dizaines de mégaoctets
IsolationUn système entier séparéDes processus isolés, sur le même noyau
Idéal pourFaire tourner un autre systèmeLivrer et lancer des applications

Cette proximité dicte la première règle de sécurité de la formation : une image, c’est du code que vous exécutez sur votre machine. N’en lancez pas une dont vous ignorez l’origine, pas plus que vous n’installeriez un logiciel trouvé au hasard.

Ports et volumes : deux passages vers l’extérieur

Un conteneur vit dans sa bulle. Deux mécanismes la relient au reste de votre ordinateur, et ils s’écrivent de la même manière : à gauche, chez vous ; à droite, chez lui.

ÉcritureCe que ça fait
-p 8080:80Le port 8080 de votre ordinateur mène au port 80 du conteneur
-p 127.0.0.1:8080:80Pareil, mais seul votre ordinateur peut l’utiliser
-v mes-donnees:/dataLe volume mes-donnees apparaît dans le conteneur sous /data

Pourquoi un volume ? Parce que la couche d’écriture d’un conteneur disparaît avec lui. Une base de données rangée à l’intérieur serait effacée à la première mise à jour. Le volume vit à côté du conteneur : on peut supprimer et recréer celui-ci autant de fois qu’on veut, les données restent. L’épisode 5 y est consacré.

Lire une commande docker run

Voici la commande que vous lancerez pour de vrai à l’épisode 3. Pour l’instant, entraînez-vous seulement à la lire.

docker run -d --name web-demo -p 127.0.0.1:8080:80 nginx:alpine
MorceauRôle
docker runCrée un conteneur à partir d’une image, puis le démarre
-dLe lance en arrière-plan : le terminal vous est rendu aussitôt
--name web-demoLui donne un nom lisible, pour les commandes suivantes
-p 127.0.0.1:8080:80Relie le port 8080 de ce PC au port 80 du conteneur
nginx:alpineL’image à utiliser, avec son tag

Retenez surtout l’ordre : les options d’abord, l’image ensuite. Tout ce qui suit le nom de l’image n’est plus lu par Docker : c’est transmis au programme du conteneur. docker run nginx:alpine -p 8080:80 ne publie donc aucun port — et se termine sur une erreur incompréhensible pour qui ne connaît pas cette règle.

Rien à exécuter dans cet épisode. Quand vous pouvez expliquer le schéma du haut de page à quelqu’un d’autre, passez à l’installation.

Testez-vous

3 questions pour vérifier que l’essentiel est acquis. Rien n’est noté ni enregistré.

  1. Vous supprimez un conteneur. Qu’arrive-t-il à l’image dont il est issu ?

  2. Dans -p 8080:80, que désigne 8080 ?

  3. Pourquoi un conteneur démarre-t-il en une seconde, quand une machine virtuelle met souvent une minute ?

Vérifier que tout fonctionne

Cochez au fur et à mesure : quand tout est coché, vous pouvez passer à la suite.

Problèmes courants

Docker fonctionne-t-il vraiment sous Windows, qui n’est pas Linux ?

Oui, grâce à WSL 2 : Windows fait tourner un vrai noyau Linux dans une machine virtuelle très légère, et Docker Desktop y lance vos conteneurs. C’est pour cela que l’épisode 2 commence par WSL.

Docker Desktop est-il gratuit ?

Pour un usage personnel, l’enseignement et les petites entreprises, oui. Les entreprises de plus de 250 salariés ou de plus de 10 millions de dollars de chiffre d’affaires annuel doivent prendre un abonnement. Docker Engine, utilisé sous Ubuntu, est libre et gratuit.

Faut-il apprendre Kubernetes en même temps ?

Non. Kubernetes répartit des centaines de conteneurs sur plusieurs machines : c’est un outil d’entreprise. Pour un PC ou un serveur à la maison, Docker et Docker Compose suffisent largement.

Votre progression reste sur cet appareil, rien n’est envoyé.