systemd-nspawn1 est l’outil natif de systemd pour lancer des conteneurs Linux légers, offrant isolation et intégration système sans nécessiter de daemon supplémentaire. Ce guide fournit une démarche détaillée pour installer, configurer et sécuriser vos services dans des conteneurs systemd-nspawn.
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Un serveur Linux avec systemd ≥ 240
- Accès root ou sudo
- Le paquet
systemd-container
- Un espace dédié (
/var/lib/machines
)
sudo apt update
sudo apt install -y systemd-container debootstrap
Installation des dépendances
sudo apt install -y debootstrap
Configuration de systemd-nspawn
1. Création du dossier de configuration
sudo mkdir -p /var/lib/machines/webapp
2. Création du fichier container.nspawn
Créez le fichier /etc/systemd/nspawn/webapp.nspawn
:
[Exec]
Boot=true
3. Démarrage du conteneur
sudo systemd-nspawn -D /var/lib/machines/webapp
Sécurisation avec capabilities
sudo systemd-nspawn -D /var/lib/machines/webapp --drop-capability=ALL
Configuration du réseau et du stockage
sudo systemd-nspawn -D /var/lib/machines/webapp --network-veth --bind=/data
Sauvegarde des données
Montez un volume externe pour les données :
sudo mount /dev/sdb1 /var/lib/machines/webapp/data
Mise à jour de systemd-nspawn
sudo debootstrap --second-stage
Comparaison avec d'autres solutions
Fonctionnalité | systemd-nspawn | Docker | LXC |
Daemon externe | Non | Oui | Oui |
Intégration systemd | Totale | Limitée | Totale |
Simplicité de configuration | Élevée | Moyenne | Moyenne |
Avantages de systemd-nspawn
- Intégration native : utilise les unités systemd2.
- Légèreté : pas de couche d’abstraction supplémentaire.
- Sécurité renforcée : isolation fine des namespaces.
Quand choisir une alternative ?
- Docker : si vous avez besoin d’un écosystème riche (registries, Swarm).
- LXC : pour des conteneurs lourds avec gestion complexe.
Conclusion
systemd-nspawn permet d’isoler efficacement vos services Linux, avec une configuration simple et une sécurité native, sans dépendre de solutions tierces.