Aller au contenu principal

Docker vs machine virtuelle : la comparaison qui éclaire tout

Résumé : c'est la question qui revient dans 100 % des entretiens techniques sur Docker. Cette leçon compare les deux technologies sur 8 axes précis (architecture, poids, temps de démarrage, isolation, sécurité, densité, cas d'usage, coût), avec des schémas clairs et un tableau de synthèse. À la fin, vous saurez répondre en 30 secondes et choisir la bonne technologie pour chaque contexte.


1. Le point commun — l'isolation

Avant de comparer, il faut voir ce que les deux technologies partagent : toutes les deux permettent de faire tourner plusieurs applications sur la même machine physique en les isolant les unes des autres.

Mais les façons dont chacune atteint cet objectif sont radicalement différentes — et c'est cette différence qui explique tout.


2. Architecture — le schéma qui explique tout

C'est le schéma le plus important de tout ce cours. Regardez-le attentivement.

2.1 · Architecture d'une machine virtuelle

Observation clé : chaque VM embarque son propre système d'exploitation complet — noyau, pilotes, services système, tout. Multiplier les VM, c'est multiplier les OS.

2.2 · Architecture Docker (conteneurs)

Observation clé : les conteneurs partagent un seul noyau Linux. Chaque conteneur n'embarque que son application et ses bibliothèques spécifiques — pas tout un OS.

Conséquence : là où 10 VM prennent 10 fois l'espace d'un OS complet, 10 conteneurs prennent 10 fois l'espace d'une simple application. La différence de poids est d'un facteur 100 à 1000.


3. Poids et temps de démarrage — la différence brutale

Ce qui suit n'est pas une exagération marketing. Ce sont des ordres de grandeur mesurés sur des machines standard.

Traduit en pratique :

  • Sur un ordinateur portable classique (16 Go de RAM), on peut lancer 3 à 5 machines virtuelles simultanément avant que l'ordinateur ne devienne inutilisable. On peut lancer 50 à 100 conteneurs sans problème.
  • Démarrer un environnement de développement complet (base de données, cache, application, worker, reverse proxy) prend plusieurs minutes en VM, quelques secondes en conteneurs.

4. Isolation et sécurité — le compromis honnête

C'est le point où la VM garde l'avantage. Ne le cachons pas.

En clair :

  • Pour héberger 100 clients qui ne se connaissent pas (comme un fournisseur cloud), la VM reste plus prudente : une faille chez un client ne compromet pas les autres.
  • Pour héberger 100 microservices de votre propre entreprise, les conteneurs sont parfaitement adaptés — la surface d'attaque interne est acceptable.

Des technologies récentes comme gVisor (Google), Kata Containers ou Firecracker (Amazon) apportent une isolation renforcée aux conteneurs, en combinant le meilleur des deux mondes — c'est ainsi que AWS Fargate et Google Cloud Run peuvent proposer du conteneur en mode multi-tenant en toute sécurité.


5. Portabilité et reproductibilité

Sur ce critère, Docker gagne haut la main.

Fait pratique : un développeur qui pousse une image Docker peut la voir déployée sur des serveurs cloud en Europe, en Asie et aux Amériques en moins de 10 minutes, sans intervention humaine. Le même exercice avec des machines virtuelles reste une entreprise lourde.


6. Tableau récapitulatif complet

Le tableau ci-dessous synthétise tous les critères en un coup d'œil. C'est celui à retenir pour un entretien.

CritèreMachine virtuelleConteneur Docker
Ce qui est virtualiséLe matériel completLe processus et son environnement
OS invitéComplet et distinctAucun — partage le noyau hôte
Poids typique1 à 20 Go5 Mo à 500 Mo
Temps de démarrage30 secondes à plusieurs minutes200 ms à 2 secondes
Densité par serveur5 à 20 VM sur un serveur classique100 à 1000 conteneurs
IsolationTrès forte (matériel)Bonne (noyau partagé)
Sécurité multi-tenant hostileRecommandéeNécessite des couches supplémentaires
PortabilitéFormat propriétaire par hyperviseurStandard OCI universel
ReproductibilitéDifficile à automatiserNative (Dockerfile)
Intégration CI/CDComplexeNative
Cas d'usage typiqueServeur d'infrastructure, environnement legacyApplications modernes, microservices
Compatibilité OS invitéWindows, Linux, macOS, BSD, Solaris…Linux natif + Windows conteneurs

7. Comment choisir en 2026

Docker n'a pas tué les machines virtuelles. Chaque technologie a son terrain de prédilection.

La combinaison gagnante en production : des conteneurs qui tournent à l'intérieur de machines virtuelles. Chaque VM offre l'isolation forte, chaque conteneur apporte la portabilité et la vitesse. C'est exactement l'architecture de la quasi-totalité des grands services cloud modernes.


8. La bonne réponse à donner en entretien

Question du recruteur : « Quelle est la différence entre Docker et une machine virtuelle ? »

Bonne réponse en 4 phrases :

Une machine virtuelle virtualise l'ensemble du matériel et embarque son propre système d'exploitation, ce qui donne une isolation très forte mais un poids important — plusieurs gigaoctets et des minutes de démarrage. Un conteneur Docker virtualise uniquement le processus et son environnement en partageant le noyau Linux de la machine hôte, ce qui donne quelque chose de très léger — quelques mégaoctets et un démarrage en moins d'une seconde. Le conteneur est donc idéal pour les applications modernes qui doivent démarrer vite et être reproduites à grande échelle. Les VM restent pertinentes pour l'isolation multi-tenant forte et pour les OS non-Linux.

Cette réponse démontre que vous comprenez la mécanique, pas juste les mots-clés. C'est ce que les recruteurs veulent entendre.


Retenir en 30 secondes

  • Une VM virtualise tout le matériel et embarque son propre OS complet. Lourde, sûre, lente à démarrer.
  • Un conteneur Docker virtualise seulement l'application et partage le noyau Linux de la machine hôte. Léger, rapide, moins isolé.
  • Ratio typique : une VM pèse 100 à 1000 fois plus qu'un conteneur équivalent.
  • Densité typique : 10 VM par serveur vs 100 à 1000 conteneurs.
  • En production moderne, on combine les deux : conteneurs dans des VM.

Suivant : L'écosystème Docker : Hub, Compose, Kubernetes, Podman →