====== "Müllcontainer" =====
Container für Anwendung, die große Mengen schwer zu pflegende Abhängigkeiten mitbringt
===== Pakete =====
* Rocky Linux (9):
* erst ''epel-release'' installieren (fügt neues Repository hinzu)
* debootstrap tmux systemd-container
* Debian (12): debootstrap tmux systemd-container
===== Storage =====
systemd-nspawn kann die Snapshot Features von Btrfs nutzen:
mkfs.btrfs /dev/???
Btrfs nach /var/lib/machines/ mounten:
mount /srv/machines.btrfs.img /var/lib/machines/
tail -n1 /proc/mounts >> /etc/fstab
chmod 700 /var/lib/machines/
Bei RedHat basierten Distributionen gibt es keinen einfachen Weg, Btrfs zu nutzen. XFS oder Ext4 tun es auch, ist halt in manchen Szenarien langsamer.
===== Vorlagen-Image für Debian erstellen =====
cd /var/lib/machines/
Debian Image erzeugen
debootstrap --include=systemd,dbus stable /var/lib/machines/debian http://debian/debian
ln -sf ../../../etc/machine-id debian/var/lib/dbus/machine-id
> debian/etc/machine-id
mkdir /etc/systemd/nspawn
vim /etc/systemd/nspawn/debian.nspawn
[Network]
VirtualEthernet=no
machinectl list-images
-> sollte debian anzeigen
===== Container für Anwendung erzeugen =====
machinectl clone debian etherpad
machinectl show-image etherpad
-> sollte Details zu dem neuen Image anzeigen
btrfs subvolume list /var/lib/machines
-> sollte subvolume "etherpad" anzeigen
echo etherpad > etherpad/etc/hostname
machinectl start etherpad
machinectl status etherpad
-> container sollte laufen
machinectl shell etherpad /bin/bash
-> danach anwendungsspezifisch weiter, z.B. [[etherpad]]
====== Sonstiges ======
Passwort setzen:
systemd-nspawn -D stretch passwd
SSH-Schlüssel hinein kopieren:
install -d -m 700 stretch/root/.ssh
install -m 600 /home/nutzer24/.ssh/id_rsa.pub stretch/root/.ssh/authorized_keys
Netzwerk per DHCP:
cat <> debian/etc/network/interfaces
auto host0
iface host0 inet dhcp
EOF
Container test1 starten:
tmux new -s test1 systemd-nspawn --template=debian --directory=test1 -M test1 --network-veth -b
DHCP-Server auf dem Host starten:
ip addr add 10.0.0.1/24 dev ve-test1 # per udev automatisieren? oder systemd.device?
ip link set up dev ve-test1
dnsmasq -d --bind-dynamic --listen-address 10.0.0.1 --dhcp-range 10.0.0.10,10.0.0.20
ssh -i /home/nutzer24/.ssh/id_rsa 10.0.0.15 uname -a
Container test1 stoppen:
machinectl status test1
machinectl terminate test1
Image test1 entfernen:
machinectl show-image test1
machinectl remove test1