Virtualisation

Qu'est-ce que LXC ?

Également connu sous le nom de: Linux Containers
Définition

LXC is Linux-native containerisation that isolates processes with namespaces and cgroups while sharing the host kernel. LXC is excellent inside a trust boundary you already own and weak as a multi-tenant boundary, because a kernel escape affects every container on the host.

Pourquoi LXC est important

LXC est excellent dans une frontière de confiance que vous possédez déjà et faible en tant que frontière multi-locataires, car une évasion du noyau affecte tous les conteneurs sur l'hôte.

LXC en pratique

Avec LXC, vous obtenez un conteneur léger qui partage le noyau de l'hôte. Vous le gérez via la suite de commandes lxc ou l'API, en surveillant les statistiques cgroup pour la pression CPU et mémoire. Le réglage consiste principalement en des limites de namespace et de cgroup : épingler des processus, définir des plafonds mémoire. Le coût d'une erreur est l'exposition : une évasion du noyau compromet tous les conteneurs de l'hôte, donc vous traitez l'hôte comme un domaine de confiance unique, et vous planifiez le basculement au niveau de l'hôte, pas par conteneur.

Ce qu'on comprend mal à propos de LXC

Les gens traitent LXC comme une frontière de sécurité équivalente à KVM. Ce n'est pas le cas : les conteneurs partagent un noyau, donc une faille dans ce noyau peut s'échapper de n'importe quel conteneur. La correction est que LXC sert à l'isolation au sein d'une frontière de confiance que vous possédez, pas pour l'hébergement multi-tenant où les locataires peuvent être hostiles.

LXC — questions fréquentes

Est-ce que LXC est la même chose que Docker ?

Non. Docker s'appuie sur des primitives de conteneurs comme LXC mais ajoute la gestion d'images, la superposition et l'orchestration. LXC ressemble plus à une VM légère : vous y exécutez une distribution complète et vous le gérez directement avec systemd ou init. Docker concerne l'empaquetage d'applications ; LXC concerne la virtualisation de systèmes.

Puis-je exécuter LXC avec un noyau personnalisé ?

Cela dépend de l'hôte. Certains fournisseurs, comme OnionVPS, donnent un accès root complet et autorisent des noyaux personnalisés, mais avec LXC vous partagez le noyau de l'hôte, donc un noyau personnalisé n'est pas pour le conteneur lui-même. Pour cela, vous utiliseriez KVM. LXC est lié à la version et à la configuration du noyau que l'hôte fournit.

Plus de virtualisation

KVM
KVM est une virtualisation matérielle complète intégrée au noyau Linux, donnant à chaque invité son propre noyau et une isolation renforcée par le matériel vis-à-vis des autres locataires.
OpenVZ
OpenVZ est une virtualisation par conteneurs dans laquelle chaque instance partage le noyau hôte, de sorte que les invités ne peuvent pas charger de modules noyau ni exécuter un système d'exploitation différent.
Hyperviseur
Un hyperviseur est la couche logicielle qui crée et exécute des machines virtuelles, allouant les CPU physiques, la mémoire et les entrées-sorties entre elles.
Virtualisation imbriquée
La virtualisation imbriquée permet à une machine virtuelle d'exécuter elle-même des machines virtuelles, en exposant les extensions de virtualisation du processeur à l'invité.
vCPU
Un vCPU est un processeur virtuel présenté à un invité, adossé au temps d'ordonnancement sur un cœur ou un thread physique.
cloud-init
cloud-init est le mécanisme standard pour configurer une machine virtuelle au premier démarrage, en utilisant des métadonnées fournies par la plateforme.