Definition

LXD (Linux Container Hypervisor)

LXD ist ein Open-Source-Verwaltungsprogramm für Linux-Container (LXC). LXD verbessert die bestehenden LXC-Funktionen, bietet aber auch neue Features und Funktionen zum Erstellen und Verwalten von Linux-Containern.

LXD ist eine REST API, die über die liblxc-Bibliothek mit LXC kommuniziert. LXD enthält auch einen Systemdämon, über den Anwendungen auf LXC zugreifen können, und verfügt über ein Template-Distributionssystem, das schnelleres Erstellen und Bedienen von Containern ermöglicht.

Containerbenutzer sollten sich darüber im Klaren sein, dass es sich bei LXC um eine Linux-Systemcontainer-Technologie handelt, die in mancher Hinsicht der Virtualisierung auf Hypervisor-Ebene, wie zum Beispiel VMware ESXi, und in anderer Hinsicht den Anwendungscontainern, wie zum Beispiel Docker, ähnelt.

Wichtige Merkmale von LXD

LXD baut auf dem grundlegenden Funktionsumfang von LXC auf und erweitert dessen Fähigkeiten. Die Vorteile von LXD umfassen:

  • eine leistungsfähige Kommandozeile (Command Line Interface, CLI),
  • hohe Skalierbarkeit,
  • verbesserte Sicherheit, die sich in unprivilegierten Containereinstellungen und Ressourcenbeschränkungen zeigt,
  • Device-Pass-Through-Fähigkeiten für USB, Netzwerkkarten (Network Interface Card, NICs), Festplatten, Grafikprozessoren und andere Hardware,
  • verbesserte Kontrolle über Rechenressourcen,
  • Netzwerk- und Speicherverwaltungsfunktionen, wie zum Beispiel Speicherpooling,
  • Snapshots von laufenden Containern und
  • Live-Migration von laufenden Containern zwischen Hosts.

LXD kann auch in Cloud-Plattformen, wie zum Beispiel OpenStack, integriert werden. So bietet das Nova-LXD-Projekt ein Plug-in für OpenStack Nova zur Integration von Containern in OpenStack. Benutzer können virtuelle Maschinen (VMs) oder Container erstellen.

Container in LXD umfassen viele Elemente, darunter ein Dateisystem namens rootfs, einen Satz von Profilen und Konfigurationsoptionen, der die oben genannten Ressourcenspezifikationen und -begrenzungen enthält, Gerätereferenzen, wie Festplatten und Netzwerkschnittstellen, Eigenschaften, wie den ephemeren oder persistenten Zustand eines Containers, und Laufzeitdetails, die in Snapshots erfasst werden.

Vor- und Nachteile

LXD baut auf LXC auf, um eine feingliedrige Containerkontrolle und Betriebssicherheit zu ermöglichen, es ist jedoch nicht für jedermann geeignet und ist nur für den Betrieb in Verbindung mit LXC vorgesehen. Es ist möglich, LXC ohne LXD zu verwenden, aber das bietet nur einen Teil der Funktionen. Stattdessen wird LXC fast immer mit LXD verwendet. Zusammen bieten sie eine leistungsfähige und praktische Alternative zu anderen Containerplattformen, einschließlich Docker und CoreOS Rkt.

Die Containertechnologie des LXC-Systems ist zwar eine praktikable Alternative zu anderen Containertechnologien, beinhaltet jedoch kein mit Docker und Rkt vergleichbares Application Delivery Framework und sollte nicht als ein Eins-zu-Eins-Ersatz betrachtet werden.

LXD im Vergleich zu Docker und Rkt

Der grundlegende Unterschied zwischen LXC oder LXD und anderen Tools wie Docker oder Rkt liegt in der Art des Containers, der erstellt wird.

Docker- und Rkt-Anwendungscontainer stellen kurzlebige, zustandslose Container mit minimalem Ressourcenverbrauch bereit. Docker und Rkt können Instanzen von Anwendungscontainern herunterladen, kryptografisch verifizieren und ausführen.

LXC mit LXD erzeugt Instanzen, die leichtgewichtigen VMs ähneln – jeder Container führt ein vollständiges Linux-System aus. Jeder Docker- oder Rkt-Container teilt sich denselben Betriebssystemkernel (OS).

Docker verließ sich bei seiner frühen Entwicklung auf LXC, hat aber seitdem seine Codebasis geändert, um eine völlig andere Plattform für Container zu schaffen. Dennoch ist Docker für seine Ähnlichkeiten mit LXC/LXD-Containern bekannt. Das Rkt-Werkzeug verwendet keinen Dämon, was andere Integrationsmöglichkeiten als Docker ermöglicht.

System- und Anwendungscontainerplattformen schließen sich nicht gegenseitig aus und können potenziell koexistieren, um je nach Benutzerbedarf unterschiedliche Instanztypen bereitzustellen. Beispielsweise kann ein Benutzer einen Docker-Container in einen vom LXD verwalteten LXC-Container schachteln.

Aufbau einer Infrastruktur mit Linux Container Hypervisor
Abbildung 1: Aufbau einer Containerinfrastruktur mit Linux Container Hypervisor

Bereitstellen und Implementieren im Linux-Kernel

LXD wird normalerweise zum Linux-Kernel hinzugefügt. Verpackte LXD-Distributionen sind für zahlreiche Linux-Distributionen erhältlich, darunter Fedora, Debian, openSUSE, Ubuntu, Alpine Linux, Arch Linux und Gentoo. Benutzer können auch LXD-Builds für Windows und MacOS bekommen.

Die tatsächliche Installation variiert je nach verwendetem Betriebssystem, stützt sich aber im Allgemeinen auf Linux-Befehle. Ein Benutzer kann LXD auch manuell aus dem Quellcode bereitstellen. Dieser Ansatz erfordert in der Regel die neueste Version von liblxc, dem Linux-Tool Checkpoint/Restore (CRIU) in Userspace und Golang. Alle diese Komponenten sollten separat installiert werden. Der Benutzer lädt dann den LXC-Client und den LXD-Server in die gewünschten Verzeichnisse herunter und fügt sie zum Kernel hinzu, um das LXD-Daemon-Binary und den LXC-Befehlszeilen-Client zum LXD-Daemon zu erstellen.

LXD-Kosten, Verfügbarkeit und Support

LXD ist kostenlos und im Allgemeinen in zwei Release-Typen erhältlich. Langzeit-Support (LTS) ist die produktionsreife Release-Version. LTS-Versionen enthalten Fehlerbehebungen und Sicherheitsupdates über einen Zeitraum von mehreren Jahren; diese bringen aber keine wesentlichen neuen Funktionen ein. Feature-Releases sind der experimentellere LXD-Zweig, der monatlich mit Features und Funktionen erscheint, die die Benutzer ausprobieren können.

Canonical hat LXD Ende 2014 auf den Markt gebracht und leistet nach wie vor einen wichtigen Beitrag zu LXD. LXD ist jedoch ein Open-Source-Projekt, so dass Anwender bei der Implementierung von LXC und LXD in einer Produktionsumgebung auf Support aus verschiedenen Quellen zurückgreifen können. Unterstützung kann von der Community, durch professionelle Beratung oder Dienstleister oder durch den Hauptanbieter von Linux kommen. Beispielsweise bietet Canonical kommerziellen Support für LXD auf Ubuntu-LTS-Versionen.

Diese Definition wurde zuletzt im November 2020 aktualisiert

Erfahren Sie mehr über Containervirtualisierung