Introduction à la conteneurisation
Introduction
Avant d’apprendre la conteneurisation on va revoir les bases, le système d’exploitation.
Je n’ai pas toutes les dates en tête mais on va dire que les premiers systèmes d’exploitation user-friendly sont sortis dans les 70/80. Le premier succès commercial, le Macinstosh 128k, avec une interface graphique ! … Oui c’était vraiment pas user-friendly avant, surtout pour débuter 😱
On va faire un petit bon dans les années 2000/2010, c’est un peu plus intéressant.. Pour rappel et que pour citer que les systèmes d’exploitations les plus connues, nous avions Linux, Windows et MacOs. En dehors d’une utilisation personnel, il y a l’utilisation professionnel, donc des versions serveurs plus spécifique sera utilisé.
- Pour Linux nous avions Debian, Ubuntu Server, Redhat.
- Pour Windows il ya Windows Server qui intégrera une panoplie de services au fil des années.
- Et pour MacOS ? Une version MacOs server a bien existé mais malheursement Apple à abandonnée MacOS Server depuis 2022.
Et à quoi y sert notre système d’exploitation ?
Pour faire simple, il nous sert à utiliser notre matériel, faire communiquer l’ensemble et nous fournir un affichage.
Pour faire simple :
Nous avons donc, un matériel qui parle entre eux en 0 et 1, ensuite des pilotes qui vont servir de langage intermédiaire entre le matériel et le kernel (système d’exploitation) et ensuite nous avons la couche logiciel (Nos applications qu’on code avec ♥️)
Une vision un peu plus complexe :
Maintenant que nous voyons ce que c’est un système d’exploitation, on va s’intéresser à une problématique.
Un serveur par application ?
Un tas de logiciels existe sur internet, certaines gourmandes en ressources d’autre non.
Imaginons que nous somme en 2005, dans une entreprise qui aimerait avoir son site internet avec des fonctionnalités avancées, liée à une base de données et tout le blabla. (Restons en 2005 quand même)
Nous allons donc acheter notre serveur DELL et installer Windows Server ou Ubuntu, ensuite nous mettons en ligne notre code du site web sur ce serveur. Tout va bien nous avons notre site internet, maintenant nous voulons une base de données, nous allons racheter un serveur ? installer encore une système d’exploitation etc ? A cette époque, pour certaines entreprise c’était le cas.
Malgré que IBM ait inventé la virtualisation dans les années 70 , comme l’ordinateur cela à mis du temps à être accessible au public et professionnel.
Une preuve dans le monde professionnel : L’arrivé d’une application de Microsoft qui se nommera Hyper-V et qui permet de créer des machines virtuel (sortie en 2008). En premier l’application sera seulement disponible dans la version serveur puis plus tard dans les version de Windows 7/8/10/11 etc.
Du coup la virtualisation c’est quoi ?
Tout simplement, ont imbrique un ordinateur dans un autre. Exemple: Nous avons un Windows 10 avec 16Go de RAM, nous pouvons créer deux Windows 10 à l’intérieur avec 4Go de RAM etc.
Sympa non ? Du coup ont achète juste un serveur pour notre site web et notre base de donnée. Economie de ressources, d’argent, d’électricité et de places physique ! que demande de plus… (La conteneurisation 😛 )
Voici un schéma qui résume la virtualisation :
Nous avons donc une couche logiciel qui va nous permettre de lancer plusieurs système d’exploitation avec des drivers etc.
Un problème la virtualisation ?
Bien sûr que non, la virtualisation occupe toujours une grande places. Cependant, n’est-ce pas du gâchis d’installer tout un système d’exploitation et de le préparer pour une applications web, un micro service ou autre ? En plus des ressources consommées pour émuler initialement le système d’exploitation nous avons la gestion en plus (Mise à jours, Sécurité, Interconnexion etc)
Et on consomme du stockage avec nos 5 système d’exploitation pour nos différentes application ?? (Et non ! la Déduplication existe, plus de détail ici pour les curieux : https://en.wikipedia.org/wiki/Data_deduplication )
Pour résumer, la virtualisation a atteins ses limités pour certains cas.
La conteneurisation !
Encore une fois je n’ai pas les dates, mais l’esprit conteneur est née dans les années 2010 ! Quel pays à réussi à nous pondre cette technologie ? vous savez ??
Des Français !
Et du coup ça nous apporte quoi ?
****Comme on viens de le voir, la virtualisation nous oblige à créer un nouveau système d’exploitation, la conteneurisation elle va s’appuyer du système d’exploitation original et juste émuler des libraires et autre pour isoler l’application tout en utiliser la couche système d’exploitation du créateur. Une image vaut 1000 mots ? Voici un schéma. (Hyperviseur = logiciel pour créer des machines virtuel, permet de redistribuer les ressources etc)
Comment conteneuriser ?
Plusieurs solutions existe mais nous en avons une très user-friendly: Docker
Tellement user-friendly que docker est entouré de plusieurs projets open source, ce qui le rends encore plus performant.
Je vais casser un de vos mythes, non ce n’est pas docker l’engin qui créer les conteneurs, c’est juste une surcouche plus agréable à utiliser. On peut le voir comme un framework qui apporte plein de fonctionnalités.
Une image qui détail ces propos :
Docker est donc tout simplement une API interne qui nous permet de communiquer avec containerD. ContainerD à été créer avec Docker et est maintenu par la CNCF.
Pour les plus curieux :
containerd | Cloud Native Computing Foundation
Je vous rassure, aucune obligation de savoir utilisé containerD etc, de plus quand nous parlons de conteneur généralement ont parle de Docker. Mais les informations au dessus sont quand même bon à prendre..