← Toutes les questions
Qu’est-ce que Docker et comment ça marche ?
SouventDébutantDevOps

Qu’est-ce que Docker et comment ça marche ?

Réponse courte
Docker est une plateforme ouverte pour empaqueter et exécuter des applications sous forme de conteneurs : processus isolés qui partagent le noyau Linux de l'hôte (via les espaces de noms et les groupes de contrôle) au lieu d'avoir besoin d'une machine virtuelle complète. Il utilise un modèle client-serveur : le Le client docker envoie des commandes via une API REST au démon dockerd, qui crée des images et exécute des conteneurs à partir d'elles.

Pourquoi il existe. Docker vous permet de regrouper une application avec toutes ses dépendances (bibliothèques, configuration, runtime) dans un seul artefact — une image — et de l'exécuter de la même manière sur un ordinateur portable de développeur, en CI et en production. Cela résout le problème classique « fonctionne sur ma machine ».

Conteneurs contre machines virtuelles. Une VM virtualise le matériel et livre un système d'exploitation invité complet avec son propre noyau. Un conteneur est un processus isolé qui utilise le noyau de l'hôte. En conséquence, les conteneurs sont plus légers, démarrent en quelques fractions de seconde et consomment moins de ressources. Mais un conteneur n'est pas une VM légère : il est lié au noyau hôte et sa limite d'isolation est plus faible que celle d'une VM. Une VM dispose d'une isolation renforcée par le matériel, alors qu'une vulnérabilité dans le noyau partagé peut potentiellement être échappée d'un conteneur - c'est le compromis entre la vitesse et la densité. L'hôte doit correspondre au type de conteneur : les conteneurs Linux ont besoin d'un noyau Linux, les conteneurs Windows ont besoin d'un noyau Windows. Sous macOS et Windows, Docker Desktop exécute de manière transparente une petite machine virtuelle Linux (par exemple via WSL2), de sorte que les conteneurs Linux partagent le noyau de cette machine virtuelle, pas celui de votre système d'exploitation.

Architecture (client-serveur). Selon la documentation de Docker :

  • Le client docker est le principal moyen par lequel les utilisateurs interagissent avec Docker ; des commandes comme docker run sont envoyées au démon.
  • Le démon dockerd « fait le gros du travail » en matière de création, d'exécution et de distribution de conteneurs et gère des objets tels que des images, des conteneurs, des réseaux et des volumes.
  • Le client communique avec le démon via une API REST via un socket UNIX ou une interface réseau, afin qu'il puisse s'exécuter sur différentes machines.
  • Un registre stocke les images ; le public par défaut est Docker Hub.

Images et conteneurs. Une analogie pratique : une image est comme une classe (ou un programme sur disque), et un conteneur en est une instance (un processus en cours d'exécution) ; vous pouvez démarrer plusieurs conteneurs à partir d'une seule image.

  • Une image est un modèle en lecture seule avec des instructions pour créer un conteneur, construit à partir de calques. Il est défini par un Dockerfile ; lorsque vous le modifiez, seuls les calques modifiés sont reconstruits.
  • Un conteneur est une instance exécutable d'une image. Au-dessus des calques en lecture seule de l'image, il ajoute une fine couche inscriptible (copie sur écriture) ; tout ce qui y est écrit est perdu lorsque le conteneur est supprimé – c'est exactement pourquoi les données persistantes ont besoin de volumes.

Comment fonctionne l'isolation (sous le capot). dockerd n'appelle pas le noyau directement : il délègue la gestion du cycle de vie des conteneurs à containerd, qui invoque un runtime OCI ; dans Docker, la valeur par défaut est runc, mais le runtime est enfichable (crun, gVisor, Kata, etc.). L'isolation réelle provient des fonctionnalités du noyau Linux :

  • Les espaces de noms isolent les ressources (selon la page man7, il existe 8 types : PID, réseau, montage, UTS, IPC, utilisateur, groupe de contrôle, heure). Un processus « voit » uniquement ses propres PID, sa propre pile réseau, etc.
  • Les cgroups (groupes de contrôle) limitent et tiennent compte de l'utilisation des ressources (CPU, mémoire, E/S).

Suivi courants. Les couches d'images sont mises en cache ; docker compose exécute des applications multi-conteneurs ; les données persistent via des volumes (un conteneur est éphémère par défaut) ; et OCI standardise le format d'image (image-spec), le runtime (runtime-spec) et le protocole de distribution du registre (distribution-spec) – ces trois spécifications maintiennent l'interopérabilité de l'écosystème.

ConteneursDocker

Téléchargez maintenant et essayez gratuitement sur vos propres tâches !

Télécharger pour Windows
10 15 crédits gratuits • Aucune carte bancaire requiseVersion: Chargement…

Sans installation - télécharge et lance. Sans inscription - connexion avec Google.