Aller au contenu principal

Le moteur de conteneurs LXC

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

sudo apt update
sudo apt install lxc lxc-templates

CentOS

sudo yum install epel-release
sudo 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-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.

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 :

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 -f
NAME STATE   AUTOSTART GROUPS IPV4       IPV6 UNPRIVILEGED
foo  STOPPED 0         -      -    -    true

Démarrer un conteneur

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

lxc-stop -n foo

Obtenir des infos d'un conteneur

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

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 :

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