Conteneur ou machine virtuelle : quelle différence ?
Vous avez peut-être déjà entendu parler de VirtualBox ou de VMware. Voici en quoi un conteneur Docker est différent.
Isoler une application n'est pas une idée née avec Docker. Avant les conteneurs, la solution la plus répandue s'appelait la machine virtuelle : un ordinateur complet simulé à l'intérieur d'un autre ordinateur. Comprendre ce que Docker fait différemment aide à comprendre pourquoi les conteneurs se sont autant répandus.
Ce qu'une machine virtuelle simule vraiment
Une machine virtuelle simule un ordinateur entier : elle installe son propre système d'exploitation complet, avec son propre noyau, indépendant de celui de la machine qui l'héberge. Résultat : une machine virtuelle est lourde, occupe plusieurs gigaoctets, et met souvent plusieurs dizaines de secondes, voire plusieurs minutes, à démarrer, exactement comme un ordinateur physique qu'on allume.
Ce qu'un conteneur fait différemment
Un conteneur ne simule pas un ordinateur entier. Il partage le noyau du système d'exploitation de la machine qui l'héberge, et isole uniquement ce qui doit l'être : les fichiers de l'application, ses processus, son réseau. Un conteneur n'embarque donc pas de système d'exploitation complet, ce qui le rend beaucoup plus léger, souvent quelques dizaines ou centaines de mégaoctets, et beaucoup plus rapide à démarrer, en général en une seconde ou deux.
Une machine virtuelle ressemble à construire un immeuble complet, avec ses propres fondations, pour y loger un seul appartement. Un conteneur ressemble davantage à un appartement dans un immeuble déjà construit : il partage la structure du bâtiment, mais reste un espace fermé et indépendant des autres appartements. Cette image aide à retenir l'idée de partage du noyau, mais ne remplace pas l'explication technique ci-dessus : un conteneur reste un vrai mécanisme d'isolation, pas un simple dossier.
Comparer les deux, concrètement
| Machine virtuelle | Conteneur Docker | |
|---|---|---|
| Système d'exploitation | Complet et indépendant | Partagé avec la machine hôte |
| Taille typique | Plusieurs Go | Quelques dizaines à centaines de Mo |
| Temps de démarrage | Dizaines de secondes à minutes | Environ une seconde |
| Niveau d'isolation | Très fort, matériel simulé | Fort, au niveau du système |
Pourquoi ce n'est pas vraiment une compétition
Les machines virtuelles n'ont pas disparu : elles restent utiles quand une isolation la plus totale possible est nécessaire, ou quand un système d'exploitation entièrement différent doit être simulé. Docker, lui, s'est imposé pour un usage différent : faire tourner rapidement de nombreuses petites applications, de façon légère, reproductible, sans le poids d'un système d'exploitation complet à chaque fois. C'est exactement ce dont vous avez besoin pour ce parcours.
Vérifiez que vous avez compris
Pourquoi un conteneur Docker démarre-t-il en une seconde environ, alors qu'une machine virtuelle peut prendre une minute ou plus ?
Parce qu'un conteneur ne simule pas un ordinateur complet : il partage directement le noyau du système d'exploitation de la machine hôte, et n'a donc pas besoin de démarrer un système d'exploitation entier à chaque lancement, contrairement à une machine virtuelle.