Passer au contenu principal

Qu'est-ce que la virtualisation ?

La virtualisation est une technologie qui permet d’exécuter plusieurs systèmes d’exploitation sur une seule machine physique, comme s’ils fonctionnaient sur des machines physiques distinctes.

 

Qu'est ce qu'une machine virtuelle ?

Une machine virtuelle (VM) est un environnement logiciel qui simule un ordinateur complet à l’intérieur d’un autre.

Elle reproduit tous les composants essentiels d’un système physique : processeur, mémoire, disque, carte réseau, etc.

Chaque machine virtuelle exécute son propre système d’exploitation (Windows, Linux, macOS…) et fonctionne de manière isolée du système principal, appelé machine hôte.

Cette isolation est assurée par un logiciel appelé hyperviseur (comme VMware, VirtualBox ou Hyper-V) qui distribue les ressources matérielles entre les différentes VMs et empêche toute interférence entre elles.

Les machines virtuelles permettent de :

  • Héberger plusieurs environnements sur un même serveur (utile pour le cloud ou le test multi-OS).

  • Isoler des applications sensibles ou expérimentales sans risquer d’endommager le système principal.

  • Simuler d’autres architectures matérielles, par exemple faire tourner Android ou Linux sur un PC Windows.

C’est d’ailleurs cette technologie qui rend possibles les émulateurs de téléphones ou de consoles : ils se comportent comme des machines virtuelles spécialisées, reproduisant le matériel de l’appareil à l’intérieur d’un autre système.Machine Virtuelle.png

 

Qu’est-ce qu’un conteneur ?

Pour comprendre ce qu’est un conteneur, il faut d’abord regarder comment fonctionne un système d’exploitation.

Dans un système d’exploitation, la couche la plus proche du matériel (processeur, mémoire, disque, carte réseau) s'appelle le kernel. C’est lui qui gère l’accès aux ressources physiques et qui sert d’interface entre le matériel et le reste du système..

Au-dessus du kernel se trouve le user space, la partie du système où s’exécutent les processus et les services du système.

Le kernel et l’espace utilisateur forment ensemble le système d’exploitation complet.

 

Le principe du conteneur

Contrairement à une machine virtuelle, un conteneur ne simule pas un système complet. Il s’exécute dans l’espace utilisateur du système hôte, en partageant le même kernel que ce dernier.

L’isolation d’un conteneur est assurée directement par le kernel via deux mécanismes essentiels :

  • Les namespaces, qui cloisonnent les processus, le réseau, le système de fichiers, etc.
  • Les cgroups, qui limitent l’usage du processeur, de la mémoire ou du disque.

Ainsi, chaque conteneur :

  • partage le kernel de la machine hôte.

  • possède sa propre portion isolée de ressources.

  • et ne peut pas accéder directement au reste du système.

Pour communiquer, il utilise uniquement son interface réseau, comme s’il s’agissait d’un petit système indépendant.

En résumé :

un conteneur vit dans l’espace utilisateur, s’appuie sur le kernel de l’hôte, et partage le matériel sans l’émuler.

C’est cette approche qui le rend beaucoup plus léger et rapide qu’une machine virtuelle, tout en conservant un bon niveau d’isolation.

Conteneur.png

Avantages des conteneurs

  • Portabilité totale : un conteneur fonctionne de la même manière sur tout système supportant un moteur compatible (Docker, Podman, etc.).

  • Reproductibilité : on peut cloner, versionner et déployer un environnement à l’identique.

  • Scalabilité : il est facile de lancer plusieurs instances identiques pour répartir la charge.

  • Jetabilité : un conteneur peut être supprimé et recréé instantanément, idéal donc pour tester, expérimenter ou mettre à jour sans risque.

 

Limites et précautions

  • Sécurité : les conteneurs partagent le kernel de la machine hôte. Une faille dans l’isolation pourrait donc, en théorie, compromettre le système.
  • Compatibilité inter-OS : un conteneur Linux ne peut pas s’exécuter directement sur Windows ou macOS. Pour contourner cela, Docker crée automatiquement une petite machine virtuelle Linux pour héberger les conteneurs. Ce scénario (conteneur dans une VM) peut devenir plus coûteux en ressources qu’une VM native. Ce n’est pas le conteneur qui est lourd, mais l’intermédiaire nécessaire sur les systèmes non Linux.

Aucune page ou chapitre n'a été ajouté à cet article.