Startseite > Paket- & Systemverwaltung > systemd-nspawn

systemd-nspawn: Leichtgewichtige Container ausführen

systemd-nspawn ist Teil des systemd-Projekts und ein Werkzeug zum Erstellen und Ausführen unabhängiger Linux-Containerumgebungen ohne virtuelle Maschinen. Es wird verwendet, um Systeme zu isolieren, was leistungsfähiger als chroot und leichter als virtuelle Maschinen ist, um Test-, Entwicklungs- und Bereitstellungsumgebungen aufzubauen.

Ü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.


Gleiche Kategorie Befehle