0 XP
?
Docker : de zéro à professionnel/Machines virtuelles vs conteneurs
Débutant35 min25 XP

Objectifs de cette leçon

  • Distinguer VMs et conteneurs
  • Comprendre l'isolation des processus
  • Évaluer les avantages de performance des conteneurs

Machines virtuelles vs conteneurs 🖥️

Architecture des machines virtuelles

Une VM contient tout un système d'exploitation complet :

┌─────────────────────────────────────────────────┐
│                   HYPERVISEUR                     │
│  (VMware, VirtualBox, Hyper-V, KVM)              │
├───────────────┬───────────────┬──────────────────┤
│     VM 1      │     VM 2      │      VM 3        │
│ ┌───────────┐ │ ┌───────────┐ │ ┌──────────────┐ │
│ │    App    │ │ │    App    │ │ │     App      │ │
│ ├───────────┤ │ ├───────────┤ │ ├──────────────┤ │
│ │   Bins    │ │ │   Bins    │ │ │    Bins      │ │
│ ├───────────┤ │ ├───────────┤ │ ├──────────────┤ │
│ │  Guest OS │ │ │  Guest OS │ │ │   Guest OS   │ │
│ │  (Ubuntu) │ │ │ (CentOS)  │ │ │  (Debian)    │ │
│ └───────────┘ │ └───────────┘ │ └──────────────┘ │
│    ~4 Go      │    ~2 Go      │     ~3 Go        │
└───────────────┴───────────────┴──────────────────┘
│                   Host OS                          │
│                (Hyperviseur)                       │
└───────────────────────────────────────────────────┘

Problème : Chaque VM a son propre OS = gourmand en ressources.


Architecture des conteneurs Docker

┌─────────────────────────────────────────────────┐
│              DOCKER ENGINE                        │
├───────────────┬───────────────┬──────────────────┤
│  Conteneur 1  │  Conteneur 2  │  Conteneur 3     │
│ ┌───────────┐ │ ┌───────────┐ │ ┌──────────────┐ │
│ │    App    │ │ │    App    │ │ │     App      │ │
│ ├───────────┤ │ ├───────────┤ │ ├──────────────┤ │
│ │   Bins    │ │ │   Bins    │ │ │    Bins      │ │
│ └───────────┘ │ └───────────┘ │ └──────────────┘ │
│   ~100 Mo     │   ~80 Mo      │    ~120 Mo       │
└───────────────┴───────────────┴──────────────────┘
│              Noyau Linux partagé                   │
└───────────────────────────────────────────────────┘

Avantage : Pas d'OS invité = léger et rapide.


Comparaison détaillée

CritèreMachine virtuelleConteneur Docker
Taille1 à 10 Go10 Mo à 500 Mo
Temps de démarrage30 sec à 5 min< 1 seconde
IsolationNiveau OS completNiveau processus
Performance~80% de l'hôte~98% de l'hôte
PortabilitéLimitée (format VM)Totale (image Docker)
RessourcesGourmandeÉconome

Comprendre l'isolation

VM : Isolation forte

Chaque VM a son propre noyau Linux. C'est comme avoir plusieurs ordinateurs virtuels :

VM 1 : noyau Linux 5.15
VM 2 : noyau Linux 6.2
→ Deux noyaux différents, deux mémoires, deux CPU virtuels

Conteneur : Isolation légère

Tous les conteneurs partagent le même noyau de l'hôte :

Conteneur 1 : Ubuntu 22.04 (fichiers système)
Conteneur 2 : Alpine Linux 3.18 (fichiers système)
→ Même noyau, processus isolés, namespaces séparés

Les namespaces Linux (isolation des conteneurs)

Docker utilise les namespaces pour isoler les processus :

NamespaceCe qu'il isoleExemple
PIDID des processusChaque conteneur voit son PID 1
NETInterface réseauChaque conteneur a sa propre IP
MNTSystème de fichiersChaque conteneur a sa racine
USERUtilisateursroot dans le conteneur ≠ root sur l'hôte
UTSHostnameChaque conteneur a son nom

Cas d'usage : quand utiliser quoi ?

Utilise une VM quand…

  • Tu as besoin d'un OS différent (Windows sur Linux)
  • Tu dois exécuter du code qui nécessite un noyau modifié
  • Tu as besoin d'une isolation maximale (sécurité)

Utilise Docker quand…

  • Tu veux déployer rapidement des applications
  • Tu veux des environnements reproductibles
  • Tu veux maximiser l'utilisation des ressources serveur
  • Tu veux des environnements de développement identiques

Résumé

VMDocker
Lourd, lent, isolatedLéger, rapide, partagé
Gourmand en RAMÉconome en RAM
Déploiement longDéploiement instantané
Bon pour les environnements completsBon pour les applications

Exercices 🎯

  1. Architecture : Pourquoi les conteneurs sont-ils plus performants que les VMs ?
  2. Sécurité : Dans quel cas l'isolation d'une VM est-elle préférable à celle d'un conteneur ?
  3. Concept : Qu'est-ce qu'un namespace Linux et pourquoi Docker en a-t-il besoin ?

Prochaine leçon : Installation de Docker et premières commandes pratiques.

VM vs Conteneurs
Cliquez pour comparer
🖥️ Matériel physique (serveur)
💿 OS Hôte (Linux)
🔲 Hyperviseur (VirtualBox / VMware)
VM 1 : Ubuntu
OS invité complet
Kernel dédié
Go de RAM
VM 2 : Windows
OS invité complet
Kernel dédié
Go de RAM
VM 3 : Fedora
OS invité complet
Kernel dédié
Go de RAM

❌ Lourd : chaque VM embarque son propre OS et kernel

VM : plusieurs Go, démarrage en minutes Conteneur : quelques Mo, démarrage en secondes