Conteneur VS VM

Pourquoi utiliser des conteneurs ?

DONNE MOI LE RÉSUMÉ

Dans ma prĂ©cĂ©dente explication en deux minutes, je suis passĂ© rapidement sur les deux choix possibles qui s’offrent Ă  nous en termes de virtualisation. Revenons un peu plus sur ce choix et comparant rapidement les deux.

VM

Avant tout, il est important de rappeler que VM signifie Virtual Machine et une VM, ça porte plutĂŽt bien son nom. En rĂ©alitĂ©, le principe de virtualisation est possible, car nous avons crĂ©Ă© des logiciels tels que VMware ou VirtualBox par exemple qui ont pour objectif de faire semblant d’ĂȘtre une machine physique rĂ©elle et tangible.

Ce genre de programme, que l’on appelle souvent des hyperviseurs, ce sont eux rĂ©ellement qui abstrait notre machine physique en une fausse machine avec des faux composants hardwares Ă©mulĂ©s sur lesquels nous pouvons lancer des machines virtuelles. En d’autres termes, le nec le plus ultra de l’hyperviseur est celui qui fake tellement bien ĂȘtre une machine physique que les machines virtuelles le croient et fonctionnent sans problĂšme.

Les VM ont plusieurs avantages. On peut par exemple dĂ©couper un serveur trĂšs puissant en plein de petit serveur virtuel que l’on peut louer Ă  des clients (c’est ce que l’on appelle des VPS). On peut aussi grĂące Ă  la virtualisation tester et dĂ©ployer des applications sur plusieurs OS diffĂ©rents. On pourrait ainsi crĂ©er une VM Windows, une autre Windows serveur et une derniĂšre sur Ubuntu par exemple et dĂ©ployer ce que l’on veut sur chacun de ces environnements.

Mais le plus gros avantage de cette virtualisation, c'est-Ă -dire sa versatilitĂ©, et aussi son plus gros dĂ©faut. CrĂ©er une VM, ça peut prendre beaucoup de temps, car comme tout travail de faussaire, cela implique de mettre en place et de reproduire tout ce que peut composer un ordinateur. De plus, nos ordinateurs de tous les jours n’ont pas Ă©tĂ© crĂ©Ă©s pour ĂȘtre des champions de la virtualisation. Il existe des systĂšmes d’exploitation dĂ©diĂ©s Ă  la gestion des VMs, beaucoup plus efficaces que nos OS de tous les jours, mais qui sont, en pratiques, inutilisables pour les humains dans le travail quotidien d’un dĂ©veloppeur ou d’un Ops par exemple.

Conteneur

De l’autre cĂŽtĂ© du navire, on a les conteneurs. Les conteneurs ont une diffĂ©rence fondamentale : ils se basent tous sur l’OS sur lesquels on les lance. En rĂ©alitĂ©, un conteneur n’est qu’un processus avec des droits et des isolations particuliĂšres tournant sur un kernel Linux.

Pour autant, de notre point de vue de dĂ©veloppeur, c’est quasiment la mĂȘme chose qu’une VM : on duplique nos fichiers et installe nos dĂ©pendances dans le conteneur, l’exĂ©cution de notre programme est isolĂ©e et on peut dupliquer notre conteneur Ă  l’infinie. Sur certain logiciel de conteneur, ont choisi mĂȘme l’OS sur lequel va tourner notre programme, comme pour les VM.

En rĂ©alitĂ©, dans le cas gĂ©nĂ©ral des conteneurs, sois 99% du temps, on n’utilise que des OS basĂ©s sur le kernel Linux (Ubuntu, Debian, 
) et ceux, mĂȘme sur Windows ou Mac. Lorsque l’on utilise un systĂšme de conteneurisation sur Windows ou Mac, nous devons souvent installer un programme intermĂ©diaire tel que Docker Desktop par exemple.

La fonction de Docker Desktop est simple : fournir une interface graphique sympathique pour les haters de docker et des lignes de commande, mais aussi, d’installer une VM linux trĂšs simple sur lequel va tourner les conteneurs que l’on lance. Et oui, sur windows ou Mac, vos conteneurs tournent tous sur une VM Linux, cachĂ©. Sur un ordinateur Linux, les conteneurs sont directement lancĂ©s sur la machine.

Vous l’aurez compris, les conteneurs sont plus rapides, car ils se servent d’élĂ©ment du systĂšme d’exploitation pour simuler de l’isolation et de la virtualisation entre les diffĂ©rents conteneurs lancĂ©s sur un mĂȘme systĂšme. C’est ainsi plus rapide de lancer une image de conteneur Ă  la volĂ©e car ces derniers se lancent comme un simple processus et non pas besoin d’un logiciel simulant tout l’aspect matĂ©riel du systĂšme.