Aller au contenu

Le moteur de conteneurs LXC

Mise à jour :

logo docker

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

  1. 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.
  2. Démarrage rapide : Les conteneurs LXC se lancent en quelques secondes, ce qui les rend idéaux pour le déploiement rapide d’applications.
  3. 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

Terminal window
sudo apt update
sudo apt install lxc lxc-templates

CentOS

Terminal window
sudo yum install epel-release
sudo yum install lxc

Arch Linux

Terminal window
sudo pacman -S lxc

Fedora

Terminal window
sudo dnf install lxc

Après avoir installé LXC, vous pouvez vérifier si tout est bien configuré avec la commande suivante :

Terminal window
lxc-checkconfig
LXC version 5.0.0~git2209-g5a7b9ce67
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-5.15.0-88-generic
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
--- Control groups ---
Cgroups: enabled
Cgroup namespace: enabled
Cgroup v1 mount points:
Cgroup v2 mount points:
/sys/fs/cgroup
Cgroup v1 systemd controller: missing
Cgroup v1 freezer controller: missing
Cgroup ns_cgroup: required
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
--- Misc ---
Veth pair device: enabled, loaded
Macvlan: enabled, not loaded
Vlan: enabled, not loaded
Bridges: enabled, loaded
Advanced netfilter: enabled, loaded
CONFIG_IP_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_IP6_NF_TARGET_MASQUERADE: enabled, not loaded
CONFIG_NETFILTER_XT_TARGET_CHECKSUM: enabled, loaded
CONFIG_NETFILTER_XT_MATCH_COMMENT: enabled, not loaded
FUSE (for use with lxcfs): enabled, not loaded
--- Checkpoint/Restore ---
checkpoint restore: enabled
CONFIG_FHANDLE: enabled
CONFIG_EVENTFD: enabled
CONFIG_EPOLL: enabled
CONFIG_UNIX_DIAG: enabled
CONFIG_INET_DIAG: enabled
CONFIG_PACKET_DIAG: enabled
CONFIG_NETLINK_DIAG: enabled
File capabilities:
Note : Before booting a new kernel, you can check its configuration
usage : 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.

Terminal window
mkdir -p ~/.config/lxc
echo "lxc.include = /etc/lxc/default.conf" > ~/.config/lxc/default.conf
echo "lxc.idmap = u 0 100000 65536" >> ~/.config/lxc/default.conf
echo "lxc.idmap = g 0 100000 65536" >> ~/.config/lxc/default.conf
echo "lxc.net.0.type = veth" >> ~/.config/lxc/default.conf
echo "lxc.net.0.link = lxcbr0" >> ~/.config/lxc/default.conf
echo "lxc.net.0.link = lxcbr0" >> ~/.config/lxc/default.conf
echo "$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 :

Terminal window
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 :

Terminal window
lxc-ls -f
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
foo STOPPED 0 - - - true

Démarrer un conteneur

Terminal window
lxc-ls -f 04:39:14
NAME STATE AUTOSTART GROUPS IPV4 IPV6 UNPRIVILEGED
foo RUNNING 0 - 10.0.3.166 - true

Arrêter un conteneur

Terminal window
lxc-stop -n foo

Obtenir des infos d’un conteneur

Terminal window
lxc-info -n foo
Name: foo
State: RUNNING
PID: 114645
IP: 10.0.3.166
Link: veth1000_RH6L
TX bytes: 1.89 KiB
RX bytes: 2.91 KiB
Total bytes: 4.80 KiB

Attacher un shell

Terminal window
lxc-attach -n foo -- sh
/ # cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.18.4
PRETTY_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 :

Terminal window
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

Sites

Vidéos