Aller au contenu principal

Virtualisation & containers

Progression

#Virtualisation & containers

À quoi ça sert ?

À quoi ça sert: isoler des environnements d’exécution, consolider des charges, et déployer à l’identique. Comment: hyperviseurs (isolation via VMs), containers (isolation noyau via namespaces/cgroups), images reproductibles.

#Concepts

  • Hyperviseur: exécute des VMs avec leur OS invité (CPU/mémoire/IO virtualisés). Type‑1 (bare‑metal) vs Type‑2 (sur OS hôte). Paravirtualisation/virtio pour réduire l’overhead.
  • Containers: partagent le noyau hôte; isolation par namespaces (pid, net, mnt, ipc, uts, user) et limitation via cgroups (CPU/mémoire/IO/pids).
  • Images: snapshot de filesystem en couches (OCI); runtime standardisés (runc/containerd) pour portabilité.

#Animation: création d’un container (concept)

Namespaces
Isoler pid/net/mount pour une vue mini‑système
Cgroups
Limiter CPU/mémoire/IO ; protéger l’hôte
RootFS
Monter l’image (overlayfs) : binaires/libs/app
Entrypoint
Processus 1 ; gérer signaux/arrêt propre
Sécurité

Activer seccomp/AppArmor/SELinux; éviter --privileged; utilisateurs non‑root et images minimales; ne montez que ce qui est nécessaire.

#Diagramme: I/O VM vs container

Processus
Container/NS
Hôte
Hyperviseur
VM
Disque
1. read()
2. Syscall (namespaces/cgroups)
3. I/O (page cache)
4. read() (guest)
5. virtio (paravirt) / émulation
6. I/O via host driver

#Quiz

Quelle différence majeure entre VM et container ?
Quelle différence majeure entre VM et container ?