Das Unternehmen Canonical hat eine Veröffentlichung des Tools zur Verwaltung isolierter LXC-Container 5.0 veröffentlicht, das eine Laufzeitumgebung bereitstellt, die sowohl für den Betrieb von Containern mit vollständiger Systemumgebung, ähnlich wie bei virtuellen Maschinen, als auch für die Ausführung unprivilegierter Container einzelner Anwendungen (OCI) geeignet ist. LXC gehört zu den niedrigstufigen Werkzeugen, die auf der Ebene einzelner Container arbeiten. Für die zentralisierte 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 in den nächsten 5 Jahren Updates bereitgestellt werden. Der Code von LXC ist in der Programmiersprache C geschrieben und steht unter der GPLv2-Lizenz.
Die LXC-Komponente umfasst die Bibliothek liblxc, eine Sammlung von Dienstprogrammen (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 Isolierung erfolgt durch die integrierten Mechanismen des Linux-Kernels. Für die Isolierung von Prozessen, Netzwerkstacks, IPC, UTS, Benutzer-IDs und Mount-Punkten wird der Mechanismus der Namespaces verwendet. Zur Ressourcenkontrolle kommen cgroups zum Einsatz. Zur Herabsetzung von Berechtigungen und zur Zugangsbeschränkung wurden Kernelfunktionen wie Apparmor- und SELinux-Profile, Seccomp-Richtlinien, Chroots (pivot_root) und capabilities genutzt.
Hauptänderungen:
- Der Wechsel von autotools zum Build-System Meson wurde vollzogen, das auch für den Bau von Projekten wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK verwendet 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 geschachtelte cgroup-Hierarchien explizit zu definieren.
- Die Unterstützung für Zeit-Namespace (time namespaces) wurde hinzugefügt, um einen separaten Zustand der Systemuhr für den Container festzulegen, der es ermöglicht, innerhalb des Containers eine eigene Zeit zu verwenden, die von der Systemzeit abweicht. Zur Konfiguration wurden die Optionen lxc.time.offset.boot und lxc.time.offset.monotonic angeboten, die es ermöglichen, für den Container eine Abweichung von der Hauptsystemzeit festzulegen.
- Für virtuelle Ethernet-Adapter (Veth) wurde die Unterstützung für VLAN implementiert. Zur Verwaltung von VLAN werden folgende Optionen angeboten: veth.vlan.id zur Festlegung des Haupt-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 mit Hilfe neuer Optionen veth.n_rxqueues und veth.n_txqueues anzupassen.
Quelle: opennet.ru
