Conteneurs LXC sous Linux : Premiers Pas

Les conteneurs LXC (Linux Containers) offrent une virtualisation légère au niveau du système d’exploitation, permettant d’exécuter plusieurs environnements Linux isolés sur un seul hôte. Contrairement aux machines virtuelles, les conteneurs LXC partagent le noyau de l’hôte, ce qui réduit considérablement la consommation de ressources. Ce guide vous accompagne dans l’installation de LXD, la création de conteneurs et la gestion quotidienne.

Installation et Initialisation de LXD

LXD est le gestionnaire de conteneurs système de nouvelle génération qui fournit une interface simplifiée au-dessus de LXC. Sur Ubuntu, installez-le via snap pour obtenir la dernière version :

sudo snap install lxd
sudo usermod -aG lxd $USER
newgrp lxd
lxd init

L’assistant lxd init vous guide à travers la configuration initiale. Pour un déploiement standard, les options recommandées sont :

Would you like to use LXD clustering? no
Do you want to configure a new storage pool? yes
Name of the new storage pool: default
Name of the storage backend to use: zfs
Would you like to create a new zfs dataset? yes
Size in GiB of the new loop device: 30
Would you like to connect to a MAAS server? no
Would you like to create a new local network bridge? yes
Would you like to configure LXD to use an existing bridge? no
What IPv4 address should be used? auto
What IPv6 address should be used? auto
Would you like the LXD server to be available over the network? no
Would you like stale cached images to be updated automatically? yes
Would you like a YAML "lxd init" preseed to be printed? no

Vérifiez que LXD est opérationnel avec lxc version et lxc storage list.

Création et Gestion des Conteneurs

Créez des conteneurs à partir des images officielles disponibles dans le dépôt d’images Linux Containers. La commande lxc launch télécharge l’image et démarre le conteneur en une seule opération :

# Lister les images disponibles
lxc image list ubuntu: | head -30
lxc image list images: | grep -i debian

# Créer et démarrer un conteneur
lxc launch ubuntu:24.04 web-server
lxc launch images:debian/12 db-server

# Opérations de base
lxc list
lxc info web-server
lxc exec web-server -- bash
lxc exec web-server -- apt update && apt upgrade -y

# Arrêter et supprimer
lxc stop web-server
lxc delete web-server
lxc delete db-server --force  # Supprime même si en cours d'exécution

Vous pouvez aussi créer des conteneurs sans les démarrer avec lxc init, ce qui est utile pour appliquer une configuration avant le premier lancement. Transférez des fichiers entre l’hôte et le conteneur avec lxc file push et lxc file pull :

lxc file push /etc/nginx/nginx.conf web-server/etc/nginx/nginx.conf
lxc file pull web-server/var/log/nginx/access.log ./access.log

Réseau et Profils

LXD crée un pont réseau par défaut (lxdbr0) qui fournit un DHCP et un NAT aux conteneurs. Pour des configurations plus avancées, créez des réseaux personnalisés ou attachez les conteneurs directement au réseau physique :

# Créer un réseau personnalisé
lxc network create my-bridge ipv4.address=10.10.10.1/24 ipv4.nat=true

# Attacher un conteneur au réseau
lxc network attach my-bridge web-server eth1

# Configurer une IP statique
lxc config device set web-server eth0 ipv4.address=10.10.10.100

Les profils permettent de prédéfinir des configurations réutilisables. Créez un profil pour les serveurs web avec des limites de ressources et des montages spécifiques :

lxc profile create web-profile
lxc profile set web-profile limits.cpu 2
lxc profile set web-profile limits.memory 2GB
lxc profile device add web-profile root disk pool=default path=/ size=20GB

# Appliquer le profil à un conteneur
lxc launch ubuntu:24.04 web-app --profile default --profile web-profile

# Voir la configuration du profil
lxc profile show web-profile

Snapshots et Sauvegardes

Les snapshots capturent l’état complet d’un conteneur à un instant donné, incluant le système de fichiers et la configuration. Ils sont essentiels pour les mises à jour et les tests :

# Créer un snapshot avant une mise à jour
lxc snapshot web-server pre-upgrade

# Lister les snapshots
lxc info web-server | grep -A 20 Snapshots

# Restaurer un snapshot
lxc restore web-server pre-upgrade

# Snapshots automatiques
lxc config set web-server snapshots.schedule "0 2 * * *"
lxc config set web-server snapshots.expiry 7d
lxc config set web-server snapshots.pattern "auto-%d"

# Exporter un conteneur complet
lxc export web-server /backups/web-server-backup.tar.gz
lxc import /backups/web-server-backup.tar.gz web-server-restored

Les snapshots automatiques combinés avec une politique d’expiration assurent des sauvegardes régulières sans intervention manuelle. Pour une sauvegarde hors site, exportez périodiquement les conteneurs et transférez les archives vers un stockage distant.

Articles Connexes