Virtualisation et Conteneurisation
Techniques permettant d'isoler des systèmes ou des applications pour maximiser l'utilisation du matériel.
1. Définition
- Virtualisation : S'appuie sur une couche logicielle (l'hyperviseur) pour simuler un ordinateur physique complet et y exécuter plusieurs systèmes d'exploitation (Machines Virtuelles ou VMs) de manière totalement isolée sur le même matériel physique.
- Conteneurisation : Virtualisation légère au niveau de l'OS. Les conteneurs se partagent le même noyau (Kernel) que l'hôte mais restent isolés dans l'espace utilisateur.
2. Description / Fonctionnement
- L'hyperviseur de Type 1 (Bare-Metal) : S'installe directement sur le matériel, sans OS intermédiaire, pour des performances maximales (ex: VMware ESXi, Proxmox VE).
- L'hyperviseur de Type 2 : S'installe sur un OS existant, utile pour les tests sur PC (ex: VirtualBox sur Windows).
- Les conteneurs systèmes (LXC) : Simulent un système Linux complet (init, ssh) de façon très légère en partageant le noyau hôte.
- Les conteneurs applicatifs (Docker) : Isolent uniquement un processus ou une application spécifique.
3. Utilisation / Cas Pratique
- VMs : Serveurs de production lourds, isolation forte de sécurité, hébergement d'OS différents (ex: faire tourner un serveur Windows sur une infrastructure physique Linux).
- LXC : Déploiement d'environnements de type "serveur Linux" très denses sur Proxmox. Ils sont très rapides à démarrer et consomment très peu de RAM et d'espace disque.
- Docker : Architecture microservices, pipelines CI/CD, garantie de portabilité du code entre l'environnement du développeur et la production.
4. Modifications possibles / Alternatives
Les Micro-VMs (Firecracker, Kata Containers)
Une Micro-VM est une machine virtuelle extrêmement allégée, conçue pour démarrer en quelques millisecondes. Elle offre la vitesse de lancement d'un conteneur avec l'isolation de sécurité stricte d'une VM traditionnelle en utilisant un noyau minimaliste. C'est la technologie phare utilisée par le cloud public pour le Serverless (ex: AWS Lambda) afin d'exécuter du code de locataires différents sur les mêmes serveurs physiques en toute sécurité.
5. Exemples visuels et Liens utiles
Comparatif VM vs LXC vs Docker
| Caractéristique | Machine Virtuelle (VM) | Conteneur Système (LXC) | Conteneur (Docker) |
|---|---|---|---|
| Périmètre | OS complet | Environnement OS Linux | Processus (Microservice) |
| Noyau (Kernel) | Possède son propre noyau | Partage le noyau de l'hôte | Partage le noyau de l'hôte |
| Temps boot | Lent (Minutes) | Instantané (Secondes) | Instantané (Secondes) |
| Poids | Lourd (Plusieurs Go) | Très léger (Quelques Mo) | Très léger (Quelques Mo) |
Architecture de base
graph TD
subgraph "Virtualisation (Hyperviseur)"
H1["OS Invité 1 + App"]
HYP["Hyperviseur (ESXi / Proxmox)"]
H1 --> HYP
end
subgraph "Conteneurisation (LXC / Docker)"
C1["App / LXC 1"]
ENG["Moteur (Docker/LXD)"]
OSH["OS Hôte (Noyau partagé)"]
C1 --> ENG
ENG --> OSH
end