====== "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