Linux Containers — installation, création et gestion de conteneurs, configuration réseau en bridge et bonnes pratiques de sécurisation.
Sur Debian / Ubuntu, installez LXC et ses templates depuis les dépôts officiels :
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 :
lxc-checkconfig
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é.
Créer un conteneur basé sur Debian (le template télécharge l'image automatiquement) :
# -n = nom du conteneur, -t = template à utiliser
sudo lxc-create -n debian-test -t debian
Lister tous les conteneurs existants avec leur état :
sudo lxc-ls -f
# Équivalent avec plus de détails
sudo lxc-ls --fancy
/var/lib/lxc/debian-test/.
Le fichier de configuration spécifique au conteneur se trouve dans
/var/lib/lxc/debian-test/config.
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 |
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.
Le fichier de configuration réseau par défaut pour tous les conteneurs se trouve ici :
/etc/lxc/default.conf
Exemple de configuration en mode bridge via l'interface lxcbr0 :
# 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
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.
Se connecter interactivement à un conteneur en cours d'exécution :
sudo lxc-attach -n debian-test
# Pour quitter le shell du conteneur
exit
Obtenir des informations sur un conteneur (état, IP, PID…) :
# 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 :
sudo journalctl -u lxc@debian-test
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.
lxc.cap.drop pour réduire
la surface d'attaque.
/var/lib/lxc/[nom]/ pour sauvegarder l'intégralité d'un conteneur,
ou utilisez lxc-copy pour en faire un clone.