LXC-Container ############# HINWEIS: Alles bitte alles als 'root' ausführen, ein einfacher Nutzer ist dazu nur im Zusammenhang mit nichtprivilegierten Containern in der Lage. Unter Debian 9 / Stretch (veraltet) =================================== Hier sollen die leider etwas umfangreichen libvirt-Tools zum Einsatz kommen, was es aber später leicher macht, das GUI "virt-manager" aufzusetzen. :: $> apt-get install lxc libvirt-clients libvirt-daemon libvirt-daemon-system Erst-Konfiguration ------------------ a) Netzwerk vorbereiten :: $> virsh -c lxc:/// net-define /etc/libvirt/qemu/networks/default.xml $> virsh -c lxc:/// net-start default $> # Wenn automatisches starten gewünscht ist $> virsh -c lxc:/// net-autostart default b) Container erstellen :: $> lxc-create -n debian9 -t debian c) Container-Konfigurationsdatei anpassen :: $> nano /var/lib/lxc/debian9/config Dabei ist folgendes zu tun: :: # Auskommentieren #lxc.network.type = empty # Am Ende anfügen lxc.network.type = veth lxc.network.flags = up lxc.network.link = virbr0 lxc.network.ipv4 = 192.168.122.2/24 lxc.network.ipv4.gateway = 192.168.122.1 Container fertigstellen ----------------------- Nach der Erstellung des Containers machen wir ihn temporär zu unserer neuen Dateisystemwurzel: :: $> chroot /var/lib/lxc/debian9/rootfs Hier setzen wir zuerst das root-Passwort und legen danach einen einfachen Benutzer an: :: $> passwd root $> useradd -m -s /bin/bash tux $> passwd tux $> exit Container benutzen ------------------ Dann können wir ihn starten und uns regulär einloggen: :: $> lxc-start -n debian9 $> lxc-console -n debian9 Stoppen kann man ihn später von innen heraus mit 'poweroff' oder von außen mit: :: $> lxc-stop -n debian9 Der ssh-Server ist bereits installiert und läuft auch schon. Jetzt folgen Nacharbeiten, so kann z.B. Software installiert werden: :: $> apt-get update $> apt-get install lsof Unter Artix Linux u.a. ====================== Stand: 2022-08-15 Genauso gut kann es unter Artix bzw. Arch Linux durchgeführt werden oder einer anderen modernen Distribution, wobei die zu installierenden Pakete dann evl. anders heißen: :: $> pacman -S lxc lxcfs Erst-Konfiguration ------------------ a) Container namens "devBeo" erstellen (ein Devuan-Linux mit dem klassischen sysVinit): :: $> lxc-create -t /usr/share/lxc/templates/lxc-download -n devBeo -- -d devuan -r beowulf -a amd64 b) Container-Konfigurationsdatei anpassen :: $> vi /var/lib/lxc/devBeo/config Dabei ist folgendes zu tun: :: # Falls kein Netzwerk benötigt wird, auf 'none' setzen: lxc.net.0.type = none # Falls Netzwerk gewünscht ist, die jeweilige Schnittstelle anpassen, # hier soll z.B. eine vorhandene Docker-Bridge genutzt werden: #lxc.net.0.link = lxcbr0 lxc.net.0.link = docker0 c) Container konfigurieren: Nach der Erstellung des Containers machen wir ihn wie vorhin temporär zu unserer neuen Dateisystemwurzel: :: $> chroot /var/lib/lxc/devBeo/rootfs Nun müssen wir hier wieder das root-Passwort setzen und einen einfachen Benutzer anlegen. Weiterhin müssen wir dafür sorgen, dass normaler Konsolen-Login (via /dev/getty) möglich wird: :: $> passwd root $> useradd -m -s /bin/bash tux $> passwd tux $> echo '1:2345:respawn:/sbin/getty 38400 console' >> /etc/inittab $> exit Container benutzen ------------------ Schließlich können wir ihn starten und uns regulär einloggen: :: $> lxc-start -F -n devBeo Hyperlinks ========== - https://pemmann.de/cc/Doc/VirtualMachine/Container-with-LXC/ - https://www.linuxjournal.com/content/everything-you-need-know-about-linux-containers-part-ii-working-linux-containers-lxc - https://stgraber.org/2014/01/17/lxc-1-0-unprivileged-containers/ - https://myles.sh/configuring-lxc-unprivileged-containers-in-debian-jessie/