Aperçu
systemd-nspawn exécute des conteneurs en partageant le noyau du système hôte tout en isolant le système de fichiers, l'arborescence des processus, le réseau, etc. Ceci est utile pour isoler en toute sécurité les environnements de développement et de test, ou pour tester des environnements de différentes distributions.
Caractéristiques principales
- Fournit un environnement de conteneur léger
- Partage du noyau hôte et efficacité des ressources
- Isolation du système de fichiers, des processus et du réseau
- Fonctionnalités d'isolation plus robustes que chroot
- Support du démarrage de conteneur basé sur systemd
Options principales
Les principales options de systemd-nspawn contrôlent le comportement du conteneur, le niveau d'isolation, la configuration réseau, etc.
Configuration de base du conteneur
Configuration réseau
Ressources et permissions
Commande générée :
Essayez de combiner les commandes.
Description:
`systemd-nspawn` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Exemples d'exécution de divers environnements de conteneurs à l'aide de systemd-nspawn.
Exécution de conteneur de base (bash)
sudo systemd-nspawn -D /var/lib/machines/mycontainer /bin/bash
Démarre un conteneur avec le système de fichiers racine spécifié et exécute un shell bash.
Conteneur démarré par systemd
sudo systemd-nspawn -b -D /var/lib/machines/mycontainer
Démarre systemd comme premier processus à l'intérieur du conteneur, fournissant un environnement système complet.
Conteneur isolé du réseau
sudo systemd-nspawn --private-network -D /var/lib/machines/mycontainer /bin/bash
Exécute un conteneur sans interface réseau pour bloquer l'accès au réseau externe.
Montage de chemin hôte bind
sudo systemd-nspawn -D /var/lib/machines/mycontainer --bind=/home/user/data:/mnt/data /bin/bash
Monte le répertoire /home/user/data de l'hôte dans /mnt/data du conteneur.
Connexion réseau avec Ethernet virtuel
sudo systemd-nspawn -D /var/lib/machines/mycontainer --network-veth /bin/bash
Crée une interface Ethernet virtuelle entre l'hôte et le conteneur pour établir une connexion réseau.
Installation
systemd-nspawn est fourni dans le cadre du paquet `systemd-container`. Il est préinstallé sur la plupart des distributions Linux basées sur systemd ou peut être facilement installé.
Debian/Ubuntu
sudo apt update && sudo apt install systemd-container
Installe le paquet systemd-container à l'aide du gestionnaire de paquets apt.
Fedora/RHEL/CentOS
sudo dnf install systemd-container
Installe le paquet systemd-container à l'aide du gestionnaire de paquets dnf.
Arch Linux
sudo pacman -S systemd-container
Installe le paquet systemd-container à l'aide du gestionnaire de paquets pacman.
Conseils et précautions
Conseils et précautions pour utiliser systemd-nspawn efficacement.
Conseils principaux
- **Privilèges root requis** : systemd-nspawn accède aux ressources système, il doit donc être exécuté avec `sudo` ou des privilèges root.
- **Préparation de l'image du conteneur** : Le système de fichiers racine du conteneur doit être préparé à l'avance. Il peut être créé à l'aide d'outils tels que `debootstrap`, `dnf --installroot`, `pacstrap`.
- **Comprendre la configuration réseau** : `--network-veth` permet la communication entre l'hôte et le conteneur, tandis que `--private-network` isole complètement le conteneur. Choisissez l'option appropriée en fonction de votre objectif.
- **Considérations de sécurité** : Bien que systemd-nspawn offre une isolation robuste, il partage le noyau hôte et peut être plus exposé aux vulnérabilités de sécurité que des solutions de virtualisation complètes comme Docker. Soyez prudent lorsque vous exécutez du code non fiable.