U moet een Debian-pakket of -service isoleren voor een test, zonder Docker op de host te installeren. Als de machine al draait met systemd, systemd-nspawn is voldoende om een Linux-root in een testcontainer te starten.
De onderstaande methode gebruikt een wegwerp-Debian Bookworm-root, start de machine met een privé-netwerk en controleert vervolgens de status met machinectl. Het doel: testen zonder per ongeluk een service bloot te stellen, en daarna netjes stoppen.

Bereid de systemd-host voor voordat u de container start
Beperk deze procedure tot een recente systemd-host en een laboratorium-image. Op een externe server, behoud uw huidige SSH-sessie voordat u de container start.
Het privé-netwerk beperkt het risico tijdens de test, maar het snijdt ook directe toegang vanuit de container. Als uw test pakketten moet downloaden na de start, houd hier dan rekening mee voordat u deze optie kiest.
ps -p 1 -o comm=
systemctl --version
command -v systemd-nspawn
command -v machinectl
De eerste opdracht moet systemd tonen. Als systemd-nspawn of machinectl ontbreekt, installeer het pakket systemd-container op Debian of Ubuntu.
Voeg nspawn niet toe in een VM of container die al erg beperkt is om een fout te omzeilen. Kernelcapaciteiten en sommige mounts kunnen ontbreken, en de foutmelding is minder leesbaar dan op een normale systemd-host.
Maak een Debian-root voor testdoeleinden
De directory geplaatst onder /var/lib/machines wordt het bestandssysteem van de container. Gebruik een expliciete naam en wijs deze opdracht nooit naar een bestaande root, productie-mount of back-updirectory.
sudo apt update
sudo apt install debootstrap systemd-container
sudo install -d -m 0755 /var/lib/machines/debian-test
sudo debootstrap --variant=minbase bookworm
/var/lib/machines/debian-test https://deb.debian.org/debian
debootstrap downloadt een minimale Debian-basis vanaf de host. Het privé-netwerk is alleen van toepassing tijdens de opstart van de container, niet in deze creatiefase.
Deze scheiding voorkomt dat de eerste poging verandert in een service die bereikbaar is op het LAN. De root blijft gemakkelijk te verwijderen als de test niet lang hoeft te duren.
Start de machine met een privé-netwerk
Open een tweede sessie op de host voordat u start. De eerste houdt nspawn op de voorgrond, met zichtbare foutmeldingen.
sudo systemd-nspawn -M debian-test
-D /var/lib/machines/debian-test
--private-network --boot
De optie -M geeft de naam debian-test aan de machine. -D verwijst naar de net voorheen gemaakte root.
Met --private-network deelt de container de netstack van de host niet. Voor een eerste opstart biedt deze beperking een betere bescherming dan een per ongeluk blootgestelde testdaemon.
Controleer de machine met machinectl
Controleer vanaf de tweede sessie eerst of systemd de machine heeft geregistreerd. Voer vervolgens de shell binnen om te bevestigen dat u daadwerkelijk in de test-Debian bent.
machinectl list
sudo machinectl shell debian-test
cat /etc/os-release
exit
machinectl list moet debian-test tonen terwijl hij draait. In de shell moet cat /etc/os-release overeenkomen met de gekozen Debian Bookworm-basis.
Als de machine niet verschijnt, keer dan terug naar de nspawn-sessie. De boodschap die op de voorgrond wordt weergegeven, biedt een betrouwbaardere aanwijzing dan een willekeurige herstart.
- Stop de container met
sudo machinectl poweroff debian-test, of gebruikCtrl+Cin de nspawn-sessie als de opstart is mislukt. - Controleer vervolgens of
machinectl listdebian-testniet meer toont. - Verwijder de test-image pas na het stoppen:
sudo rm -rf /var/lib/machines/debian-test.
De laatste opdracht verwijdert de hele root van de container. Bewaar de directory als u dezelfde test opnieuw wilt uitvoeren, maar behandel het niet als een productie basis zonder updates bij te houden.
Kies nspawn, Docker of Podman afhankelijk van de behoefte
Voor een complete, lokale en wegwerp Linux-machine is systemd-nspawn de meest directe keuze op een systemd-host. Het voorkomt dat u een Docker-stapel moet toevoegen alleen om een test-shell te openen.
Voor het bouwen van OCI-images, het integreren van een CI-pijplijn of het verplaatsen van dezelfde container tussen meerdere hosts zijn Docker of Podman geschikter. De behoefte is niet dezelfde.
De gids voor het installeren van Docker op Debian met controles behandelt deze andere benadering. Als uw test afhankelijk is van een service die bij de opstart wordt gestart, helpt de pagina om systemd-services te lezen om de status te controleren. De documentatie systemd-nspawn(1) op man7 gaat dieper in op de opties voor mounts en netwerken.