Quelle différence entre conteneurisation et virtualisation ?
Conteneurs et machines virtuelles permettent de séparer un workload du matériel sous-jacent, mais les deux approches présentent des différences importantes qu'il convient de connaître.
Une machine virtuelle (VM - Virtual Machine) « imite » intégralement un serveur. Dans un serveur virtualisé type, chaque VM « invitée » contient un système d'exploitation complet, avec ses pilotes, fichiers binaires ou bibliothèques, ainsi que l'application elle-même. Chaque VM s'exécute alors sur un hyperviseur, qui s'exécute à son tour sur un système d'exploitation hôte, qui lui-même fait fonctionner le matériel du serveur physique.
Bien que la méthode ait fait ses preuves, on s'aperçoit aisément que chaque itération du système d'exploitation hôte et des fichiers binaires associés risque d'entraîner des doublons entre les VM ; cela gaspille la mémoire du serveur et limite forcément le nombre de VM prises en charge par chaque serveur. Ce qui –pour certains – remet en cause le futur de cette technologie.
A la base, le concept de conteneurisation permet aux instances virtuelles de partager un système d'exploitation hôte unique, avec ses fichiers binaires, bibliothèques ou pilotes.
Cette approche réduit le gaspillage des ressources car chaque conteneur ne renferme que l'application et les fichiers binaires ou bibliothèques associés. On utilise donc le même système d'exploitation (OS) hôte pour plusieurs conteneurs, au lieu d'installer un OS (et d'en acheter la licence) pour chaque VM invitée. Ce procédé est souvent appelé virtualisation au niveau du système d'exploitation.
Le rôle de l'hyperviseur est alors assuré par un moteur de conteneurisation, tel que Docker, qui s'installe par-dessus le système d'exploitation hôte.
Connaissez vous la différence :
Comme le conteneur de chaque application est libéré de la charge d'un OS, il est nettement plus petit, plus facile à migrer ou à télécharger, plus rapide à sauvegarder ou à restaurer.
Enfin, il exige moins de mémoire. La conteneurisation permet au serveur d'héberger potentiellement beaucoup plus de conteneurs que s'il s'agissait de machines virtuelles. La différence en termes d'occupation peut être considérable, car un serveur donné accueillera de 10 à 100 fois plus d'instances de conteneur que d'instances d'application sur VM.
Un environnement conteneurisé, comme Docker, fonctionne comme une série de couches, avec tout d'abord une image de base composée d'un OS et d'une application, dont Linux, Apache et une application Web personnalisée. Les mises à jour et modifications s'appliquent par couches supplémentaires pour créer de nouvelles images, puis l'image voulue sert à lancer des conteneurs pouvant également être arrêtés, transférés et supprimés selon les besoins.
En isolant les conteneurs les uns des autres, la conteneurisation assure la sécurité des applications et empêche la prolifération de logiciels malveillants entre les instances… Même si, par définition, l’isolation est plus importante entre VM qu’entre conteneurs.