====== Container Alpine Linux in Systemd-nspawn ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 12/09/2025 11:32 //** // //
Alpine linux non รจ basata su systemd dunque il sottosistema di container di systemd (systemd-nspawn) non la supporta del tutto. Di seguito alcune soluzioni al problema. Dovrebbe bastare lanciare systemd-nspawn da riga di comando senza passare per machinectl. In modo tale da "ereditare" diverse caratteristiche del sistema host reale.
Scaricare il miniroot fs che viene preparato dal progetto : [[https://www.alpinelinux.org/downloads/|Alpine]] e scompattarlo in una cartella ("./alpine" in questo esempio).
Ecco un esempio. lancio solo l'applicazione che mi serve.
/usr/bin/systemd-nspawn -D ./alpine/ --as-pid2 /bin/sh
===== Una unit per lanciare il container all'avvio =====
Uso come entrypoint sul container uno script (/usr/local/bin/start.sh).
**/etc/systemd/system/alpine-web.service**
[Unit]
Description=Run a Alpine web server container
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/systemd-nspawn -D /mnt/alpine/ --as-pid2 /usr/local/bin/start.sh
ExecStop=/usr/bin/machinectl terminate Alpine-web
[Install]
WantedBy=multi-user.target
Esempio di entrypoint :
**start.sh**
#!/bin/bash
/usr/sbin/sshd -p 3030 &
/usr/bin/prosody --nodaemon --log=stdout --loglevel=debug --config /etc/prosody/prosody.cfg.lua
Ricordarsi di generare le chiavi di sshd con **ssh-keygen -A** .
Lanciare il container con :
systemctl start alpine-web
Lanciare automaticamente il container con :
systemctl enable alpine-web
Per killare il container usare ripetutatamente il comando :
machinectl kill alpine-web
oppure entrare in ssh sul container e digitare "poweroff"
===== Avviare al boot se il container risiede su disco esterno =====
Vedere la sezione "Container che risiedono su un disco esterno" : [[sistema:systemd:avviare_container_al_boot|Avviare container systemd-nspawn al boot]]