Overzicht
systemd-nspawn voert containers uit door de kernel van het host-systeem te delen, terwijl het bestandssysteem, de procesboom, het netwerk, enz. wordt geïsoleerd. Dit is nuttig voor het veilig scheiden van ontwikkel- en testomgevingen, of voor het uitproberen van omgevingen van verschillende distributies.
Belangrijkste kenmerken
- Biedt een lichtgewicht containeromgeving
- Deelt de host-kernel en efficiënt gebruik van bronnen
- Isolatie van bestandssysteem, processen en netwerk
- Krachtigere isolatiefuncties dan chroot
- Ondersteunt het opstarten van systemd-gebaseerde containers
Belangrijkste opties
De belangrijkste opties van systemd-nspawn regelen het gedrag van de container, het isolatieniveau, netwerkinstellingen, enz.
Standaard containerinstellingen
Netwerkinstellingen
Bronnen en rechten
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`systemd-nspawn` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Voorbeelden van het uitvoeren van verschillende containeromgevingen met systemd-nspawn.
Standaard container uitvoeren (bash)
sudo systemd-nspawn -D /var/lib/machines/mycontainer /bin/bash
Start een container met het opgegeven root-bestandssysteem en voer een bash-shell uit.
systemd boot container
sudo systemd-nspawn -b -D /var/lib/machines/mycontainer
Start een container met systemd als het initiële proces om een volledige systeemomgeving te bieden.
Netwerk geïsoleerde container
sudo systemd-nspawn --private-network -D /var/lib/machines/mycontainer /bin/bash
Voer een container uit zonder netwerkinterfaces om externe netwerktoegang te blokkeren.
Host pad bind mount
sudo systemd-nspawn -D /var/lib/machines/mycontainer --bind=/home/user/data:/mnt/data /bin/bash
Mount de /home/user/data directory van de host naar /mnt/data in de container.
Netwerkverbinding met virtuele Ethernet
sudo systemd-nspawn -D /var/lib/machines/mycontainer --network-veth /bin/bash
Creëert een virtuele Ethernet-interface tussen de host en de container om het netwerk te verbinden.
Installatie
systemd-nspawn wordt geleverd als onderdeel van het `systemd-container` pakket. Op de meeste systemd-gebaseerde Linux-distributies is het standaard geïnstalleerd of eenvoudig te installeren.
Debian/Ubuntu
sudo apt update && sudo apt install systemd-container
Installeer het systemd-container pakket met de apt pakketbeheerder.
Fedora/RHEL/CentOS
sudo dnf install systemd-container
Installeer het systemd-container pakket met de dnf pakketbeheerder.
Arch Linux
sudo pacman -S systemd-container
Installeer het systemd-container pakket met de pacman pakketbeheerder.
Tips & Aandachtspunten
Tips en aandachtspunten voor het effectief gebruiken van systemd-nspawn.
Belangrijkste tips
- **Root-rechten vereist**: systemd-nspawn heeft toegang nodig tot systeembronnen, dus het moet worden uitgevoerd met `sudo` of root-rechten.
- **Voorbereiding container-image**: Het root-bestandssysteem van de container moet van tevoren zijn voorbereid. U kunt het genereren met tools zoals `debootstrap`, `dnf --installroot`, `pacstrap`, enz.
- **Begrijp netwerkinstellingen**: `--network-veth` staat communicatie tussen de host en de container toe, terwijl `--private-network` de container volledig isoleert. Kies de juiste optie op basis van uw doel.
- **Beveiligingsoverwegingen**: Hoewel systemd-nspawn sterke isolatie biedt, deelt het de host-kernel, waardoor het mogelijk kwetsbaarder is voor beveiligingslekken dan volledige virtualisatieoplossingen zoals Docker. Wees voorzichtig bij het uitvoeren van onbetrouwbare code.