Wenn heute von Containern die Rede ist, wird oft Docker als Synonym benutzt. In letzter Zeit wird in diesem Zusammenhang des Öfteren auch Podman erwähnt. Was aber viele nicht wissen ist, dass Container bereits seit 2008 im Kernel verankert sind. Die Rede ist von LXC aka Linux Container. LXC baut dabei auf Kernel-Funktionen wie Namespaces und Control Groups (cgroups) auf.
Neue Control Groups
Gerade ist LXC 5.0 LTS erschienen und bietet neben fünf Jahren Langzeitunterstützung Verbesserungen in beiden Bereichen. Zudem wechselte das Build-System von autotools zu Meson. Vier neue cgroups ermöglichen es, genau zu steuern, welche cgroup-Pfade für den Container selbst und für den Monitorprozess verwendet werden. Außerdem kann die cgroup des Containers innerhalb einer verschachtelten inneren cgroup platziert werden.
- lxc.cgroup.dir.container
- lxc.cgroup.dir.monitor
- lxc.cgroup.dir.monitor.pivot
- lxc.cgroup.dir.container.inner
Mittels cgroups lassen sich Ressourcen wie CPU-Slices, Arbeitsspeicher oder Netzwerk-Bandbreite auf einzelne oder Gruppen von Prozessen verteilen.
Time-Namespace eingeführt
Bei den Namensräumen, die durch Gruppierung und Wiederverwendung einen besser strukturierten Code ermöglichen, kommt eine zeitliche Komponente hinzu. Ein Time-Namespace erlaubt es, über zwei neue Optionen einen Offset von einigen Nanosekunden bis zu Stunden auf den Timer des Systems anzuwenden. Darüber hinaus gibt es weitere neue Konfigurationsoptionen für die VLAN-Unterstützung bei virtuellen Ethernet-Geräten (VETH).
Namespaces ermöglichen einen besser strukturierteren Code, indem
Weitere Einzelheiten vermittelt die offizielle Ankündigung von Entwickler Stéphane Graber. Dort ist auch ein Tarball von LXC 5.0 LTS zu finden. Ansonsten ist LXC in vermutlich allen Distributionen vertreten. Zum Einsatz kommt das Container-Format unter anderem bei Proxmox VE und als Grundlage für Canonicals LXD.