Conteneurs logiciels vs Machines Virtuelles 

Beaucoup se demandent ce qui distingue un conteneur d’une machine virtuelle. La différence majeure peut être résumée comme suit :

  • Comme les machines virtuelles (VM), les conteneurs sont une forme de virtualisation mais plus légère.
  • Les machines virtuelles virtualisent le matériel et exécutent un système d'exploitation invité entier au travers d’un hyperviseur de type 1 (sans OS hôte) ou 2 (avec OS hôte). Chaque VM est donc constituée d’un système d’exploitation invité complet.

Cette virtualisation "lourde" a fait ses preuves et continuera encore à l’avenir. Elle fournit une bonne isolation, mais engendre une surcharge de processeur, de mémoire et disque consommés par des systèmes d'exploitation invités souvent identiques dans chaque VM. Le temps de démarrage est donc également d’autant plus lent.

En revanche, une plateforme conteneurs comme Docker se situe plus haut et virtualise uniquement le système d’exploitation pour offrir à chaque container et donc à l’application ou aux applications qu’il encapsule, un espace utilisateur propre (mémoire partagée, processus, point de montage des volumes, adressage réseau,…).

L’isolation n’est pas aussi forte car le système d’exploitation est mis en commun, mais cette virtualisation consomme moins de ressources CPU, mémoire, et disque et offre surtout l’avantage d’un temps de déploiement et de démarrage nettement plus rapide car les containers ne requièrent pas de boot OS dans le processus de démarrage contrairement aux VMs.

Cette légèreté, vue sous cet angle, offre des avantages évidents pour les développeurs lors des phases de tests nécessitant de nombreux redémarrages : phase de tests et développement initial, tests de non régression lors des mises à jour applicatives.

cl_vs_mv_01

Enfin, la virtualisation "lourde" sous forme de VM a toujours sa place dans les infrastructures modernes et n’est pas antinomique à la containerisation. La puissance complète d’un serveur hôte « baremetal » dédié n’est pas souvent requise dans ce genre de projet. Dans ce cas, un container ou plusieurs containers déployés sur une VM est la solution idéale offrant le meilleur des 2 mondes.

cl_vs_mv_02

 

N'hésitez pas à nous contacter pour toute information complémentaire

Contactez-nous