Guide technique — Virtualisation légère

Conteneurs Linux
avec LXC

Linux Containers — installation, création et gestion de conteneurs, configuration réseau en bridge et bonnes pratiques de sécurisation.

Auteur
EHAVOX
Mise à jour
2025
Système
Debian / Ubuntu
Sommaire
01

Installation de LXC

Sur Debian / Ubuntu, installez LXC et ses templates depuis les dépôts officiels :

bash
sudo apt update
sudo apt install lxc lxc-templates -y

Vérifier que le noyau est compatible avec LXC et que toutes les fonctionnalités requises sont disponibles :

bash
lxc-checkconfig
Info
lxc-checkconfig affiche l'état de chaque fonctionnalité kernel nécessaire. Toutes les lignes importantes doivent afficher enabled. Une ligne missing peut indiquer un noyau trop ancien ou non configuré.
02

Création d'un conteneur

Créer un conteneur basé sur Debian (le template télécharge l'image automatiquement) :

bash
# -n = nom du conteneur, -t = template à utiliser
sudo lxc-create -n debian-test -t debian

Lister tous les conteneurs existants avec leur état :

bash
sudo lxc-ls -f
# Équivalent avec plus de détails
sudo lxc-ls --fancy
Info
Les fichiers du conteneur sont stockés dans /var/lib/lxc/debian-test/. Le fichier de configuration spécifique au conteneur se trouve dans /var/lib/lxc/debian-test/config.
03

Cycle de vie du conteneur

Toutes les opérations de base pour gérer le cycle de vie d'un conteneur :

Commande Action
lxc-start -n debian-test -d Démarrer le conteneur en arrière-plan (-d = daemon)
lxc-attach -n debian-test Prendre le contrôle interactif du conteneur (shell)
lxc-stop -n debian-test Arrêter proprement le conteneur
lxc-freeze -n debian-test Suspendre le conteneur (sans l'éteindre)
lxc-unfreeze -n debian-test Reprendre un conteneur suspendu
lxc-destroy -n debian-test Supprimer définitivement le conteneur et ses fichiers
Attention
lxc-destroy est irréversible — il supprime le conteneur et toutes ses données. Arrêtez le conteneur avec lxc-stop avant de le détruire.
04

Configuration réseau

Le fichier de configuration réseau par défaut pour tous les conteneurs se trouve ici :

path
/etc/lxc/default.conf

Exemple de configuration en mode bridge via l'interface lxcbr0 :

lxc.conf
# Type de réseau : veth = interface virtuelle pairée
lxc.net.0.type   = veth

# Interface bridge de l'hôte à connecter
lxc.net.0.link   = lxcbr0

# Activer l'interface au démarrage du conteneur
lxc.net.0.flags  = up

# Adresse MAC (les xx sont à personnaliser)
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
Info
Par défaut, LXC crée un bridge lxcbr0 avec le réseau 10.0.3.0/24 et un DHCP interne. Les conteneurs obtiennent automatiquement une IP dans cette plage. Pour une IP fixe, éditez la config spécifique au conteneur dans /var/lib/lxc/[nom]/config.
05

Connexion & informations

Se connecter interactivement à un conteneur en cours d'exécution :

bash
sudo lxc-attach -n debian-test

# Pour quitter le shell du conteneur
exit

Obtenir des informations sur un conteneur (état, IP, PID…) :

bash
# Informations détaillées (état, IP, mémoire…)
sudo lxc-info -n debian-test

# Vue globale de tous les conteneurs
sudo lxc-ls --fancy

Consulter les journaux d'un conteneur via systemd :

bash
sudo journalctl -u lxc@debian-test
06

Astuces & sécurisation

  • Isoler chaque service dans un conteneur dédié — un conteneur par service (Apache, base de données, application) limite la propagation en cas de compromission. C'est le principe fondamental d'une architecture Nginx → LXC.
  • Configurer un bridge réseau — utilisez lxcbr0 pour permettre un accès LAN contrôlé aux conteneurs, et combinez avec des règles iptables pour restreindre les flux entrants et sortants.
  • Surveiller les accès réseau — installez Fail2ban à l'intérieur des conteneurs exposés pour bloquer les tentatives de connexion répétées sur SSH, Apache ou autres services.
  • Restreindre les capacités du conteneur — dans la configuration du conteneur, limitez les capabilities Linux disponibles avec lxc.cap.drop pour réduire la surface d'attaque.
  • Sauvegarder régulièrement — copiez le dossier /var/lib/lxc/[nom]/ pour sauvegarder l'intégralité d'un conteneur, ou utilisez lxc-copy pour en faire un clone.
Astuce
Pour une architecture web complète et isolée, consultez le guide Nginx qui décrit comment router le trafic entrant depuis l'hôte vers les containers via reverse proxy et règles NAT iptables.