Die Firma Canonical hat ein Release des Werkzeugs zur Verwaltung isolierter LXC-Container 5.0 veröffentlicht, das eine Laufzeitumgebung bietet, die sowohl für die Ausführung von Containern mit vollständiger Systemumgebung, ähnlich wie bei virtuellen Maschinen, als auch für die Ausführung von nicht privilegierten Containern einzelner Anwendungen (OCI) geeignet ist. LXC zählt zu den Low-Level-Tools, die auf der Ebene einzelner Container arbeiten. Für die zentrale Verwaltung von Containern, die in einem Cluster aus mehreren Servern bereitgestellt werden, wird auf Basis von LXC das System LXD entwickelt. Der Branch LXC 5.0 gehört zu den Versionen mit langfristiger Unterstützung, für die über einen Zeitraum von 5 Jahren Updates bereitgestellt werden. Der LXC-Code ist in C geschrieben und wird unter der GPLv2-Lizenz verteilt.
Die LXC umfasst die Bibliothek liblxc, eine Sammlung von Tools (lxc-create, lxc-start, lxc-stop, lxc-ls usw.), Vorlagen für den Aufbau von Containern und eine Reihe von Bindings für verschiedene Programmiersprachen. Die Isolation erfolgt durch die standardmäßigen Mechanismen des Linux-Kernels. Zur Isolation von Prozessen, Netzwerk-Stacks, IPC, UTS, Benutzer-ID und Mount-Punkten wird der Namensraum-Mechanismus (namespaces) verwendet. Ressourcen werden mit cgroups limitiert. Zur Herabsetzung der Berechtigungen und zur Einschränkung des Zugriffs kommen Funktionen des Kernels wie Apparmor-Profile, SELinux, Seccomp-Politiken, Chroots (pivot_root) und capabilities zum Einsatz.
Wesentliche Änderungen:
- Der Wechsel von autotools zu dem Build-System Meson wurde vollzogen, das auch für den Bau solcher Projekte wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK genutzt wird.
- Neue Optionen zur Konfiguration von cgroups wurden hinzugefügt — lxc.cgroup.dir.container, lxc.cgroup.dir.monitor, lxc.cgroup.dir.monitor.pivot und lxc.cgroup.dir.container.inner, die es ermöglichen, die cgroup-Pfade für den Container, den Überwachungsprozess und die verschachtelten cgroup-Hierarchien explizit zu definieren.
- Die Unterstützung von Zeitnamenräumen (time namespaces) wurde hinzugefügt, um für Container einen separaten Status der Systemuhr zu binden, der es ermöglicht, in dem Container eine eigene Zeit zu verwenden, die sich von der Systemzeit unterscheidet. Zur Konfiguration stehen die Optionen lxc.time.offset.boot und lxc.time.offset.monotonic zur Verfügung, um für den Container die Verschiebung im Verhältnis zur Hauptsystemuhr zu definieren.
- Für virtuelle Ethernet-Adapter (Veth) wurde die Unterstützung von VLAN implementiert. Zur Verwaltung von VLAN stehen folgende Optionen zur Verfügung: veth.vlan.id zur Festlegung des primären VLAN und veth.vlan.tagged.id zur Bindung zusätzlicher getaggter VLANs.
- Für virtuelle Ethernet-Adapter wurde die Möglichkeit hinzugefügt, die Größe der Empfangs- und Übertragungswarteschlangen über die neuen Optionen veth.n_rxqueues und veth.n_txqueues zu konfigurieren.
Quelle: opennet.ru
