Le moteur de conteneurs LXC
Mise à jour :
LXC, ou LinuX Containers, est une technologie de virtualisation légère qui permet d’exécuter plusieurs environnements d’exploitation Linux isolés (conteneurs) sur une seule machine hôte Linux. Contrairement aux machines virtuelles traditionnelles, les conteneurs LXC partagent le même noyau du système d’exploitation de l’hôte, ce qui les rend plus efficaces en termes de ressources et plus rapides à démarrer.
Les avantages des conteneurs LXC
- Efficacité des ressources : En partageant le noyau de l’hôte, les conteneurs LXC utilisent moins de ressources matérielles par rapport aux machines virtuelles, ce qui permet de maximiser l’utilisation du matériel.
- Démarrage rapide : Les conteneurs LXC se lancent en quelques secondes, ce qui les rend idéaux pour le déploiement rapide d’applications.
- Isolation légère : Bien que les conteneurs partagent le noyau, ils restent isolés les uns des autres, garantissant une sécurité et une stabilité adéquates.
Absolument, voici une expansion du deuxième chapitre, “Installation de LXC”, pour votre billet de blog :
Installation de LXC
Prérequis
Avant de commencer l’installation de LXC, assurez-vous de disposer d’un système Linux compatible. LXC est largement pris en charge sur diverses distributions Linux, notamment Ubuntu, Debian, CentOS et plus encore.
La méthode d’installation de LXC peut varier légèrement en fonction de la distribution Linux que vous utilisez. Voici des commandes d’installation courantes pour quelques distributions populaires :
Ubuntu/Debian
sudo apt updatesudo apt install lxc lxc-templates
CentOS
sudo yum install epel-releasesudo yum install lxc
Arch Linux
sudo pacman -S lxc
Fedora
sudo dnf install lxc
Après avoir installé LXC, vous pouvez vérifier si tout est bien configuré avec la commande suivante :
lxc-checkconfig
LXC version 5.0.0~git2209-g5a7b9ce67Kernel configuration not found at /proc/config.gz; searching...Kernel configuration found at /boot/config-5.15.0-88-generic--- Namespaces ---Namespaces: enabledUtsname namespace: enabledIpc namespace: enabledPid namespace: enabledUser namespace: enabledNetwork namespace: enabled
--- Control groups ---Cgroups: enabledCgroup namespace: enabled
Cgroup v1 mount points:
Cgroup v2 mount points:/sys/fs/cgroup
Cgroup v1 systemd controller: missingCgroup v1 freezer controller: missingCgroup ns_cgroup: requiredCgroup device: enabledCgroup sched: enabledCgroup cpu account: enabledCgroup memory controller: enabledCgroup cpuset: enabled
--- Misc ---Veth pair device: enabled, loadedMacvlan: enabled, not loadedVlan: enabled, not loadedBridges: enabled, loadedAdvanced netfilter: enabled, loadedCONFIG_IP_NF_TARGET_MASQUERADE: enabled, not loadedCONFIG_IP6_NF_TARGET_MASQUERADE: enabled, not loadedCONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled, loadedCONFIG_NETFILTER_XT_MATCH_COMMENT: enabled, not loadedFUSE (for use with lxcfs): enabled, not loaded
--- Checkpoint/Restore ---checkpoint restore: enabledCONFIG_FHANDLE: enabledCONFIG_EVENTFD: enabledCONFIG_EPOLL: enabledCONFIG_UNIX_DIAG: enabledCONFIG_INET_DIAG: enabledCONFIG_PACKET_DIAG: enabledCONFIG_NETLINK_DIAG: enabledFile capabilities:
Note : Before booting a new kernel, you can check its configurationusage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig
Configuration initiale
Lorsque LXC est installé, il peut être utile de configurer quelques paramètres initiaux. Vous pouvez définir des répertoires de stockage par défaut, des réseaux et d’autres options de configuration selon vos besoins spécifiques.
mkdir -p ~/.config/lxc
echo "lxc.include = /etc/lxc/default.conf" > ~/.config/lxc/default.confecho "lxc.idmap = u 0 100000 65536" >> ~/.config/lxc/default.confecho "lxc.idmap = g 0 100000 65536" >> ~/.config/lxc/default.confecho "lxc.net.0.type = veth" >> ~/.config/lxc/default.confecho "lxc.net.0.link = lxcbr0" >> ~/.config/lxc/default.confecho "lxc.net.0.link = lxcbr0" >> ~/.config/lxc/default.confecho "$USER veth lxcbr0 2" | sudo tee -a /etc/lxc/lxc-usernet
Gestion basique de conteneurs LXC
Création d’un nouveau conteneur
Dans un premier temps il faut télécharger les images :
lxc-create -t download -n foo
Gestion des conteneurs
Pour voir la liste des conteneurs LXC en cours d’exécution sur votre système, utilisez la commande suivante :
lxc-ls -fNAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGEDfoo STOPPED 0 - - - true
Démarrer un conteneur
lxc-ls -f 04:39:14NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGEDfoo RUNNING 0 - 10.0.3.166 - true
Arrêter un conteneur
lxc-stop -n foo
Obtenir des infos d’un conteneur
lxc-info -n fooName: fooState: RUNNINGPID: 114645IP: 10.0.3.166Link: veth1000_RH6L TX bytes: 1.89 KiB RX bytes: 2.91 KiB Total bytes: 4.80 KiB
Attacher un shell
lxc-attach -n foo -- sh
/ # cat /etc/os-releaseNAME="Alpine Linux"ID=alpineVERSION_ID=3.18.4PRETTY_NAME="Alpine Linux v3.18"HOME_URL="https://alpinelinux.org/"BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues"
exit
Suppression d’un conteneur
Si vous souhaitez supprimer un conteneur LXC, utilisez la commande suivante :
lxc-destroy -n foo
Conclusion
Les conteneurs LXC (Linux Containers) sont une solution puissante et polyvalente pour la virtualisation légère sous Linux. Ils offrent un moyen efficace de créer, gérer et isoler des environnements d’exécution Linux, ce qui les rend adaptés à une variété de cas d’utilisation en développement logiciel et en administration système.
Il est important de noter que, bien que les conteneurs LXC soient une solution puissante, leur utilisation nécessite une compréhension approfondie des concepts sous-jacents et une planification soignée pour garantir une utilisation efficace et sécurisée.
Plus d’infos
- Site officiel : linuxcontainers.org ↗
Sites
- LXC ↗ de David Gayerie
- Virtualisation basée sur les LinuX Containers, aka LXC ↗