Übersicht
systemd-nspawn führt Container aus, indem es den Kernel des Host-Systems teilt, aber Dateisystem, Prozessbaum, Netzwerk usw. isoliert. Dies ist nützlich, um Entwicklungs- und Testumgebungen sicher zu trennen oder Umgebungen anderer Distributionen zu testen.
Hauptmerkmale
- Bereitstellung einer leichtgewichtigen Containerumgebung
- Gemeinsame Nutzung des Host-Kernels und Ressourceneffizienz
- Isolierung von Dateisystem, Prozessen und Netzwerk
- Leistungsfähigere Isolierungsfunktionen als chroot
- Unterstützung für systemd-basiertes Container-Booten
Wichtige Optionen
Die wichtigsten Optionen von systemd-nspawn steuern das Verhalten des Containers, den Isolationsgrad, die Netzwerkkonfiguration usw.
Standard-Container-Einstellungen
Netzwerkkonfiguration
Ressourcen und Berechtigungen
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`systemd-nspawn` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Beispiele für die Ausführung verschiedener Containerumgebungen mit systemd-nspawn.
Standard-Container-Ausführung (bash)
sudo systemd-nspawn -D /var/lib/machines/mycontainer /bin/bash
Startet einen Container mit dem angegebenen Root-Dateisystem und führt eine bash-Shell aus.
systemd-Boot-Container
sudo systemd-nspawn -b -D /var/lib/machines/mycontainer
Startet systemd als initialen Prozess innerhalb des Containers, um eine vollständige Systemumgebung bereitzustellen.
Netzwerkisolierter Container
sudo systemd-nspawn --private-network -D /var/lib/machines/mycontainer /bin/bash
Führt einen Container ohne Netzwerkschnittstellen aus, um den externen Netzwerkzugriff zu blockieren.
Host-Pfad-Bind-Mount
sudo systemd-nspawn -D /var/lib/machines/mycontainer --bind=/home/user/data:/mnt/data /bin/bash
Mountet das Verzeichnis /home/user/data des Hosts in /mnt/data des Containers.
Netzwerkverbindung über virtuelles Ethernet
sudo systemd-nspawn -D /var/lib/machines/mycontainer --network-veth /bin/bash
Erstellt eine virtuelle Ethernet-Schnittstelle zwischen Host und Container, um das Netzwerk zu verbinden.
Installation
systemd-nspawn ist Teil des Pakets `systemd-container`. Auf den meisten systemd-basierten Linux-Distributionen ist es standardmäßig installiert oder kann einfach installiert werden.
Debian/Ubuntu
sudo apt update && sudo apt install systemd-container
Installiert das Paket systemd-container mit dem apt-Paketmanager.
Fedora/RHEL/CentOS
sudo dnf install systemd-container
Installiert das Paket systemd-container mit dem dnf-Paketmanager.
Arch Linux
sudo pacman -S systemd-container
Installiert das Paket systemd-container mit dem pacman-Paketmanager.
Tipps & Hinweise
Tipps und Hinweise zur effektiven Nutzung von systemd-nspawn.
Wichtige Tipps
- **Root-Berechtigungen erforderlich**: systemd-nspawn greift auf Systemressourcen zu und muss daher mit `sudo` oder Root-Berechtigungen ausgeführt werden.
- **Vorbereitung des Container-Images**: Das Root-Dateisystem des Containers muss vorbereitet sein. Es kann mit Werkzeugen wie `debootstrap`, `dnf --installroot` oder `pacstrap` erstellt werden.
- **Verständnis der Netzwerkkonfiguration**: `--network-veth` erlaubt die Kommunikation zwischen Host und Container, während `--private-network` den Container vollständig isoliert. Wählen Sie die passende Option entsprechend Ihrem Anwendungsfall.
- **Sicherheitsüberlegungen**: systemd-nspawn bietet eine starke Isolierung, teilt sich aber den Host-Kernel, was es anfälliger für Sicherheitslücken machen kann als vollständige Virtualisierungslösungen wie Docker. Seien Sie vorsichtig, wenn Sie nicht vertrauenswürdigen Code ausführen.