Vous avez peut-être déjà téléchargé un émulateur Nintendo, PS1/2, Game Boy Advance ou autre, et bien sans le savoir, vous avez déjà été confrontés à de la virtualisation !
En attendant la future formation des 2A sur le sujet (n'hésitez pas à leur demander quand est-ce qu'elle aura lieu), voici quelques points pour s'initier à la virtualisation :
La virtualisation consiste, en informatique, à exécuter sur une machine hôte, dans un environnement isolé, des systèmes d'exploitation — on parle alors de virtualisation système — ou des applications — on parle alors de virtualisation applicative. Ces ordinateurs virtuels sont appelés serveur privé virtuel (Virtual Private Server ou VPS) ou encore environnement virtuel (Virtual Environment ou VE). - Wikipédia
Partons de votre ordinateur, la machine qu'on va appeler hôte sur laquelle tourne un système d'exploitation, Windows par exemple.
Un jour, vous voulez avoir Linux sur votre ordinateur, mais vous ne pouvez pas pour une raison ou une autre avoir un dual boot.
La solution c'est d'installer un logiciel de virtualisation, qui vous permettra de faire tourner une nouvelle machine virtuelle, qui émulera l'environnement Linux dont vous avez besoin.
Vous n'êtes peut-être pas sans savoir que tout programme tournant sur une machine n'est qu'une suite de 0 et de 1 que l'on peut regrouper en instructions. Ces instructions sont spécifiques à l'architecture de votre processeur et au noyau de votre système d'exploitation. L'idée est de traduire chacune des instructions non-compatible pour les rendre compatibles avec celles de la machine hôte.
L'hyperviseur va alors simuler tout le système d'exploitation cible à l'interieur de l'hôte pour arriver à ces fins.
Un conteneur est une version "allégée" d'une VM.
L'objectif d'un conteneur est le même que pour un serveur dédié virtuel : héberger des services sur un même serveur physique tout en les isolant les uns des autres. Un conteneur est cependant moins figé qu'une machine virtuelle en matière de taille de disque et de ressources allouées. - Wikipedia
La principale différence entre une VM et un conteneur est qu'un conteneur ne simule pas entièrement la machine cible mais seulement son OS.
Cette methode de virtualisation a comme inconvénient de ne permettre d'émuler que des OS ayant le même noyau que la machine hôte mais vient avec l'avantage d'être beaucoup plus léger à faire tourner mais permet aussi de connecter les différents conteneurs entre eux via un réseau interne.
Nous nous interessons dans ce TP aux conteneurs par la suite car ce sont ceux qui sont le plus utilisés dans l'industrie.
Finis tout ce blabla, nous allons désormais passer à la pratique.
Nous allons utiliser l'outil docker
(qui est, ici, quasiment complètement interchangeable avec le célebre podman
), pour l'installer sur linux il vous suffit de taper la commande
sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl enable docker
sudo systemctl start docker
L'installation avec ces lignes de codes peut ne pas fonctionner. Tu peux directement passer par le site de docker, télécharger l'application et continuer le TP.
Nous allons maintenant déployer nginx, un outil très utilisé à MiNET par exemple pour les revproxys.
Commencez par taper la commande
sudo docker run -p 8080:80 nginx
Puis dans votre navigateur, allez à l'url http://localhost:8080, vous devriez avoir une page dont le titre est "Welcome to nginx!"
Si c'est le cas, bravo : vous avez créé votre premier conteneur fonctionnel !
Expliquons mainetenant plus en détail cette commande :
sudo
: Permet d'obtenir des droits super-utilisateur pour effectuer la commande, ces droits sont nécessaires pour dialoguer avec le daemon dockerdocker
: Nom de la commande shell permettant de dialoguer avec le daemon dockerrun
: Commande à effectuer par le daemon docker, ici créer et lancer un conteneur-p 8080:80
: Option de la commande run permettant d'associer le port tcp 8080
de l'ordinateur au port 80
du conteneurnginx
: Nom de l'image docker a lancer, c'est un alias de registry.hub.docker.com/library/nginxPour trouver une grande variété d'images docker, vous pouvez aller sur https://hub.docker.com/