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

  1. 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
  1. Container erstellen

$> lxc-create -n debian9 -t debian
  1. 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

  1. 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
  1. 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
  1. 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