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.