DOCKER - 9 Conteneurs vs VMs
Il est courant de comparer les conteneurs aux machines virtuelles. Cependant, il faut comprendre une vérité fondamentale : un conteneur n'est qu'un processus. Plus précisément, c'est un processus restreint exécuté sur votre système d'exploitation. Ce n'est pas une machine virtuelle. Un conteneur ne crée pas son propre système d'exploitation complet—il partage le noyau de l'OS hôte.
Pour illustrer, commençons un conteneur MongoDB. La commande est :
docker run -d --name mongodb mongo
Vous pouvez lister les processus en exécution dans ce conteneur avec docker top mongodb. Vous verrez un seul processus : le daemon MongoDB. Si vous avez arrêté ce conteneur avec docker stop mongodb, il ne tourne plus. docker ps ne le montrera plus. Vous pouvez le redémarrer avec docker start mongodb, et à ce moment, le processus MongoDB redémarre. Refaites docker top mongodb et vous verrez le processus en exécution à nouveau.
La raison pour laquelle Docker les appelle "conteneurs" plutôt que "processus" est pour la clarté pédagogique. Mais comprendre que c'est fondamentalement un processus restreint est crucial. Chaque conteneur n'a qu'un processus principal (PID 1). S'il s'arrête, le conteneur s'arrête. Vous pouvez avoir plusieurs conteneurs exécutant différents images sur le même OS, et chacun fonctionne de manière isolée sans interférence, tout en partageant le même noyau système.
Cette légèreté—juste un processus restreint plutôt qu'une VM complète—est ce qui rend Docker si puissant et efficace en ressources.
En résumé
Cette leçon explique la différence fondamentale entre les conteneurs Docker et les machines virtuelles. Contrairement à une idée reçue, les conteneurs ne sont pas des machines virtuelles miniatures, mais simplement des processus restreints s'exécutant sur votre système d'exploitation. La leçon illustre ce concept par des démonstrations pratiques avec MongoDB, en montrant comment créer, gérer et contrôler les conteneurs via les commandes Docker essentielles.
Points clés
- Les conteneurs Docker sont des processus restreints, non des machines virtuelles
- Un conteneur exécute un seul processus principal (exemple : mongod pour MongoDB)
- Commandes essentielles : docker run (lancer), docker ps (lister les actifs), docker top (voir les processus), docker stop et docker start (arrêter/redémarrer)
- Arrêter un conteneur ne le supprime pas ; il reste en arrière-plan comme un processus suspendu
- Un conteneur arrêté peut être redémarré à tout moment sans perte de données
Questions fréquentes
Quelle est la différence entre un conteneur et une machine virtuelle ?
Un conteneur est un processus restreint qui s'exécute directement sur votre système d'exploitation, tandis qu'une machine virtuelle est un système complet indépendant. Les conteneurs sont beaucoup plus légers et simples à déployer.
Comment voir les processus qui s'exécutent dans un conteneur spécifique ?
Utilisez la commande docker top <nom-conteneur> pour lister les processus qui tournent à l'intérieur de ce conteneur.
Que se passe-t-il quand on arrête un conteneur avec docker stop ?
Le conteneur s'arrête et devient inactif, mais reste présent en arrière-plan. On peut le redémarrer à tout moment avec docker start sans perdre ses données.