Martin Neitzel
Gaertner Datensysteme
Linux-Container einmal "bottom-up": ein Blick auf die Konzepte, system-calls und einfachen Kommandos, die den Einstieg in die Container-Welt eroeffnen.
Praktische Experimente machen wir bspw. mit unshare(1) und systemd-nspawn(1). Groessere Frameworks wie Docker, LXC/LXD, Proxmox-PVE oder Kubernetes werden dabei nicht benoetigt.
Admin-Kommandos wie ps(1), mount(1) und ifconfig(1)/ip(1) sollten bekannt sein.
Ich habe die Linux-Containerisierung viele Jahre links liegen lassen, Anfang 2018 aber viel Spass mit dem Einstieg gehabt. Bereits am am ersten Abend liefen ploetzlich unterschiedliche Linux-Distributionen zeitgleich auf meinem RaspberryPi-2. Allerdings wurde die Nacht dann doch recht lang, als alle setuid-Programme eines Systems nicht mehr "root" gehoerten...
In diesem Vortrag geht es um die Grundlagen fuer Container und damit vor allem um "Namespaces". Wie kann sich eine neue Prozess-Hierarchie von der bestehenden abkoppeln? Wie kann man das auf der Shell ausprobieren und ueberpruefen? Woher kommen Namespaces und Container historisch, und was fuer eine Linux-Version sollte man mindestens haben, um selber Experimente zu machen?
Das alles werden wir live mit Hilfe der Kommandozeile und einfachen
Boardmitteln beantworten: unshare(1), nsenter(1), lsns(1) und einem
Blick auf /proc/*/ns
. Anstelle von grossen Container-Frameworks
wie Docker gucken wie uns dann abschliessend ein sehr kleines aber
nuetzliches Tool an, mit containerisierte VMs spielend leicht
an den Start gebracht werden koennen: systemd-nspawn(1).
namespaces(7), clone(2), unshare(2), setns(2), unshare(1), nsenter(1), lsns(1), systemd-nspawn(1), machinectl(1).
Folien (Eher eine Gedankenstuetze fuer mich; wir nehmen die shell, nicht die Folien.)