Linux Container Grundlagen

Martin Neitzel
Gaertner Datensysteme

Abstract

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.

Vorraussetzungen

Admin-Kommandos wie ps(1), mount(1) und ifconfig(1)/ip(1) sollten bekannt sein.

Shortpaper

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

SEE ALSO

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