Polarys
Docker & conteneurs/Concepts fondamentaux

Concepts fondamentaux

VM vs conteneurs : comprendre la différence

VM vs conteneurs : comprendre la différence

Avant Docker, déployer une application signifiait souvent provisionner une machine virtuelle complète. Les conteneurs proposent une approche radicalement différente : plus légère, plus rapide, mais avec ses propres contraintes.

La machine virtuelle : isolation totale

Une VM émule un ordinateur complet (CPU, RAM, disque, réseau) sur un hyperviseur (VMware ESXi, Hyper-V, VirtualBox). Chaque VM embarque son propre système d'exploitation invité.

┌─────────────────────────────────────┐
│  VM 1 (Ubuntu)   VM 2 (Windows)     │
│  ┌───────────┐   ┌──────────────┐   │
│  │ App + OS  │   │  App + OS    │   │
│  └───────────┘   └──────────────┘   │
│         Hyperviseur (Type 1/2)      │
│              Hardware               │
└─────────────────────────────────────┘

Avantage : isolation totale, OS différents sur le même hôte. Inconvénient : démarrage en minutes, empreinte mémoire lourde (OS invité = 512 Mo à 4 Go).

Le conteneur : isolation légère

Un conteneur partage le noyau Linux de l'hôte (pas de second OS). Il utilise deux mécanismes noyau :

  • namespaces : isolent les processus, le réseau, le système de fichiers (chaque conteneur "voit" son propre univers)
  • cgroups : limitent les ressources CPU et RAM attribuées
graph TD
    HW[Hardware]
    OS[OS Linux hôte + noyau partagé]
    DE[Docker Engine / containerd]
    C1[Conteneur 1
App + libs]
    C2[Conteneur 2
App + libs]
    C3[Conteneur 3
App + libs]

    HW --> OS --> DE
    DE --> C1
    DE --> C2
    DE --> C3

Avantage : démarrage en secondes, empreinte mémoire faible (quelques Mo pour les libs applicatives uniquement). Inconvénient : tous les conteneurs partagent le même noyau Linux (pas de Windows dans un conteneur Linux).

Comparaison pratique

CritèreVMConteneur
Démarrage1-5 min< 5 secondes
PoidsPlusieurs Go (OS)Quelques Mo à centaines de Mo
IsolationTotale (OS séparé)Processus/réseau isolés, noyau partagé
PortabilitéImage volumineuseImage légère, portable
Idéal pourOS différents, isolation maximaleMicroservices, CI/CD, déploiement rapide

Cas concret : déployer Nginx

Sans Docker : installer nginx, gérer les dépendances, configurer le service système. Avec Docker :

docker run -d -p 80:80 nginx

Nginx tourne en 3 secondes, sans rien installer sur l'hôte.

Erreurs fréquentes

  • Conteneur = VM légère : non. Un conteneur partage le noyau hôte. Il ne peut pas faire tourner Windows sur un hôte Linux.
  • Les données dans un conteneur sont persistantes : non par défaut. Quand un conteneur est supprimé, ses données le sont aussi. Il faut des volumes (leçon suivante).
  • Docker = Linux uniquement : Docker Desktop sur Windows/Mac utilise une VM Linux légère en coulisse pour faire tourner les conteneurs.

À retenir

  • Conteneurs = namespaces + cgroups → isolation légère, noyau partagé.
  • VMs = OS complet → isolation totale, plus lourd.
  • Docker n'est pas la seule runtime : containerd, Podman, CRI-O coexistent.
  • Démarrage conteneur : secondes. Démarrage VM : minutes.

Quiz de validation

Quiz - 2 questions

1. Quels mécanismes Linux permettent l'isolation des conteneurs Docker ?

2. Que se passe-t-il aux données d'un conteneur quand il est supprimé ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.