Das Unternehmen Canonical Release des Werkzeugs zur Organisation von isolierten Containern , Container-Manager und virtuelle Dateisysteme für die Simulation von Containern /proc, /sys und der virtualisierten Darstellung von cgroupfs für Distributionen ohne Unterstützung von Namensräumen für cgroup. Die Version 4.0 gehört zu den Langzeitversionen, für die Updates über einen Zeitraum von 5 Jahren bereitgestellt werden.
LXC ist eine Laufzeitumgebung zur Ausführung sowohl von Systemcontainern als auch von Anwendungscontainern (OCI). LXC umfasst die Bibliothek liblxc, eine Sammlung von Dienstprogrammen (lxc-create, lxc-start, lxc-stop, lxc-ls usw.), Vorlagen zum Erstellen von Containern sowie Bindungen für verschiedene Programmiersprachen. Die Isolation erfolgt durch die integrierten Mechanismen des Linux-Kernels. Für die Isolation von Prozessen, Netzwerkstacks, IPC, UTS, Benutzer-IDs und Mount-Punkten wird der Namespaces-Mechanismus verwendet. Ressourcenbeschränkungen werden durch cgroups vorgenommen. Zur Herabsetzung von Rechten und zur Zugangsbeschränkung kommen Funktionen des Kernels wie AppArmor- und SELinux-Profile, Seccomp-Richtlinien, Chroots (pivot_root) und Capabilities zum Einsatz. Der LXC-Code in C geschrieben und wird unter der GPLv2-Lizenz verbreitet.
LXD ist eine Erweiterung für LXC, CRIU und QEMU, die zur zentralen Verwaltung von Containern und virtuellen Maschinen auf einem oder mehreren Servern verwendet wird. Während LXC ein Low-Level-Tool zur Manipulation einzelner Container ist, wird LXD als Hintergrundprozess implementiert, der Netzwerk-Anfragen über eine REST-API entgegennimmt und das Erstellen skalierbarer Konfigurationen ermöglicht, die über ein Cluster mehrerer Server bereitgestellt werden.
Es werden verschiedene Backend-Speicher unterstützt (Verzeichnisbaum, ZFS, Btrfs, LVM), Snapshot-Funktionalität für Status-Abbilder, Live-Migration laufender Container von einer Maschine zur anderen und Tools zur Organisation von Abbildspeichern. Der LXD-Code ist in Go geschrieben und steht unter der Apache 2.0-Lizenz.
Schlüssige in LXC 4.0:
- Der Treiber für die Arbeit mit cgroup wurde vollständig neu geschrieben. Unterstützung für die einheitliche cgroup-Hierarchie (cgroup2) wurde hinzugefügt. Die Funktionalität des Kontrollers freezer wurde hinzugefügt, mit dem die Arbeit in der cgroup gestoppt und vorübergehend einige Ressourcen (CPU, Ein-/Ausgabe und potenziell sogar Speicher) freigegeben werden können, um andere Aufgaben auszuführen;
- Die Infrastruktur zur Abfangung von Systemaufrufen wurde implementiert;
- Die Unterstützung des Kernel-Subsystems „pidfd“ wurde hinzugefügt, das zur Handhabung von Situationen mit der Wiederverwendung von PIDs gedacht ist (pidfd ist mit einem bestimmten Prozess verbunden und bleibt konstant, während die PID nach dem Abschluss des aktuellen Prozesses einem anderen Prozess zugeordnet werden kann);
- Die Erstellung und Löschung von Netzwerkschnittstellen sowie deren Verschiebung zwischen den Namensräumen des Netzwerk-Subsystems wurden verbessert;
- Die Möglichkeit, drahtlose Netzwerkschnittstellen (nl80211) in Container zu verschieben, wurde realisiert.
Schlüssige in LXD 4.0:
- Die Unterstützung für die Ausführung nicht nur von Containern, sondern auch von virtuellen Maschinen wurde hinzugefügt;
- Für die Segmentierung von LXD-Servern wurde das Konzept der Projekte eingeführt, das die Verwaltung von Gruppen von Containern und virtuellen Maschinen vereinfacht. Jedes Projekt kann eine eigene Gruppe von Containern, virtuellen Maschinen, Bildern, Profilen und Speichereinheiten enthalten. Zu den Projekten können eigene Beschränkungen festgelegt und Einstellungen geändert werden;
- Die Unterstützung zur Abfangung von Systemaufrufen für Container wurde hinzugefügt;
- Die Möglichkeit zur Erstellung von Backups von Umgebungen und deren Wiederherstellung wurde implementiert;
- Automatisierte Snapshots von Umgebungen und Speicherbereichen können nun erstellt werden, mit der Möglichkeit, die Lebensdauer eines Snapshots zu bestimmen;
- Ein API zur Überwachung des Netzwerkzustands wurde hinzugefügt (lxc network info);
- Unterstützung für , ein virtuelles Dateisystem zur Zuordnung von Einhängepunkten zu Benutzer-Namespaces;
- Neue Typen von Netzwerkadaptern „ipvlan“ und „routed“ wurden vorgestellt;
- Ein Backend für die Nutzung von CephFS-basierten Speichern wurde hinzugefügt;
- Für Cluster wurde die Unterstützung für die Replikation von Images und multiarchitekturelle Konfigurationen implementiert;
- Die Möglichkeit zur rollenbasierten Zugriffskontrolle (RBAC) wurde hinzugefügt;
- Die Unterstützung für CGroup2 wurde hinzugefügt;
- Die Konfiguration der MAC-Adresse und die Definition der Quelladresse für NAT wurden hinzugefügt;
- Ein API zur Verwaltung von DHCP-Bindungen (leases) wurde hinzugefügt;
- Die Unterstützung für Nftables wurde hinzugefügt.
Quelle: opennet.ru
