Proxmox-LXC vs. VM als Docker-Host mit USB- oder GPU-Passthrough: Was ist einfacher zu betreiben?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Wählen Sie einen Proxmox-LXC-Container als Docker-Host, wenn Linux-Geräteknoten sicher bereitgestellt werden können, der Host die erforderlichen GPU- oder USB-Treiber verwaltet und ein geringer Overhead oder die gemeinsame GPU-Nutzung wichtig ist. Wählen Sie eine VM, wenn der Gast den Treiberstapel selbst verwalten muss, ein PCI-Gerät über IOMMU isoliert werden soll oder Docker und sein Hardwarezugriff unabhängig vom Proxmox-Host bleiben müssen. Serielle USB-Geräte eignen sich oft für beide Varianten; exklusives GPU-Passthrough spricht in der Regel für eine VM.

„Passthrough“ definieren, bevor LXC und eine VM verglichen werden

LXC und KVM übergeben Hardware nicht auf dieselbe Weise an Workloads. Ein LXC-Container verwendet den Kernel des Proxmox-Hosts gemeinsam und erhält daher normalerweise die Berechtigung, auf vom Host erstellte Geräteknoten wie `/dev/dri`, `/dev/ttyUSB0` oder `/dev/bus/usb` zuzugreifen. Der Host erkennt die Hardware weiterhin und lädt den Kernel-Treiber.

Eine VM führt ihren eigenen Kernel aus. Proxmox kann ein USB-Gerät emulieren, ein ausgewähltes USB-Gerät oder einen USB-Port einbinden oder über VFIO und IOMMU ein PCI-Gerät zuweisen. Der Gast lädt anschließend seinen eigenen Treiber und behandelt die zugewiesene Hardware eher wie ein direkt installiertes Gerät.

Der aktuelle ZimaSpace Proxmox-NAS-Einrichtungsleitfaden stellt beide Gasttypen vor. Dieser Artikel grenzt die Entscheidung auf einen Docker-Host ein, dessen Container USB-Dongles, serielle Adapter, Medien-GPUs oder Rechenbeschleuniger benötigen.

Entscheidungsachse Docker innerhalb eines Proxmox-LXC Docker innerhalb einer VM
Kernel Verwendet den Kernel des Proxmox-Hosts gemeinsam Führt einen unabhängigen Gastkernel aus
USB-Zugriff Stellt Geräteknoten und Berechtigungen des Hosts bereit Bindet das ausgewählte USB-Gerät oder den ausgewählten USB-Port in den Gast ein
GPU-Zugriff Verwendet normalerweise gemeinsam den vom Host geladenen Treiber und die Rendergeräte Kann über VFIO ein exklusives PCI-Gerät erhalten
Ressourcenaufwand Geringerer Speicher- und Speicherplatzbedarf Zusätzlicher Arbeitsspeicher und Speicherplatz für das Gastbetriebssystem
Isolation Stärkere Abhängigkeit vom Host und eine gemeinsam genutzte Kernel-Grenze Stärkere Trennung von Treibern und Kernel
Portabilität Hängt von kompatiblen Hostgeräten, Treibern, IDs und Zuordnungen ab Der Treiberstatus des Gasts wird mit der VM übertragen, die physischen PCI-Zuordnungen bleiben jedoch hostabhängig
GPU-Freigabe Mehrere Container können dasselbe Rendergerät des Hosts verwenden, sofern dies unterstützt wird Das Passthrough des gesamten Geräts weist das Gerät normalerweise exklusiv einer VM zu
Am besten geeignet Medien, serielle USB-Geräte und gemeinsam genutzte Linux-GPU-Dienste Exklusive Beschleuniger, proprietäre Treiber, stärkere Isolation, gemischte Gastbetriebssysteme

USB-Geräte sprechen für LXC, wenn sie sich wie stabile Linux-Geräteknoten verhalten

USB-Seriell-Adapter, Zigbee-Koordinatoren, USV-Schnittstellen, Coral-USB-Beschleuniger und ähnliche Geräte können in LXC gut funktionieren, wenn Proxmox den Gerätepfad freigibt und die korrekten Besitzrechte zuweist. Der Docker-Container innerhalb von LXC erhält dieses Gerät dann aus seiner Linux-Hostumgebung.

Eine praxisnahe Erklärung des USB-Zugriffs in Proxmox-LXC zeigt das zugrunde liegende Muster: Das Einbinden des Geräts reicht nicht aus, wenn der Container nicht auch dafür freigegeben ist.

Verwenden Sie stabile Pfade wie `/dev/serial/by-id`, sofern die Anwendung diese unterstützt. Busnummern und Zuordnungen wie `/dev/ttyUSB0` können sich nach einem Neustart oder einer erneuten Verbindung ändern. Der LXC-Weg wird fragil, wenn jedes Host-Update eine manuelle Reparatur von cgroup, UID, GID oder Gerätepfad erfordert.

Eine VM ist sauberer, wenn die USB-Verwaltung vollständig eigenständig sein muss

Eine VM kann ein USB-Gerät anhand von Hersteller- und Produkt-ID oder über einen physischen Port erhalten und anschließend den Gerätetreiber im eigenen Betriebssystem laden. Das ist hilfreich, wenn das Gerät ein Herstellerpaket, eine andere Kernelversion oder einen Anwendungsstack benötigt, der nicht von den Proxmox-Hostbibliotheken abhängen soll.

Die VM schafft außerdem eine klarere Diagnosegrenze. Wenn der Gast das USB-Gerät verliert, kann der Administrator zunächst die Einbindung im Hypervisor und anschließend den Gasttreiber separat prüfen. Bei LXC sind Hosttreiber, Gerätepfad, Berechtigungen, Container-Zuordnung, Docker-Runtime und Anwendung Teil einer einzigen Kette.

Der Nachteil betrifft das Verhalten bei der Wiederverbindung. Manche USB-Geräte werden zurückgesetzt, ändern ihre Identität oder verschwinden beim Neustart des Gasts. Testen Sie das Aus- und Einstecken, den Neustart des Hosts, den Neustart des Gasts und die Wiederherstellung der Anwendung, anstatt anzunehmen, dass eine erfolgreiche erste Einbindung einen stabilen Betrieb beweist.

-15% OFF

Gemeinsamer GPU-Zugriff spricht meist für LXC

Für Intel- oder AMD-Rendergeräte sowie unterstützte NVIDIA-Workloads kann LXC die Gerätepfade der Host-GPU für mehrere Linux-Dienste freigeben. Die GPU bleibt dem Proxmox-Host-Treiber unterstellt, sodass mehrere Container Hardware-Transkodierung oder Berechnungen nutzen können, ohne das gesamte PCI-Gerät einer einzelnen Gastinstanz zuzuweisen.

Das aktuelle Proxmox-Beispiel von XDA erklärt, wie LXC die vom Host verwaltete GPU gemeinsam nutzen kann, anstatt sie per VM-Passthrough exklusiv zuzuweisen. Dasselbe Betriebsmodell eignet sich für Jellyfin, Plex, Frigate oder mehrere Docker-Dienste, sofern Treiber- und Berechtigungsanforderungen übereinstimmen.

Die gemeinsame Nutzung führt zu einer Versionskopplung. Der Host-Kernel-Treiber, die User-Space-Bibliotheken innerhalb von LXC, die Integration der Docker-Laufzeit und die Anwendungspakete müssen kompatibel bleiben. Ein Upgrade des Proxmox-Kernels oder -Treibers kann sich daher gleichzeitig auf jeden Container auswirken, der die GPU verwendet.

Exklusives GPU-Passthrough spricht in der Regel für eine VM

Eine VM ist die bessere Option, wenn eine Arbeitslast direkten Besitz einer dedizierten GPU, einen proprietären Gast-Treiber, Windows-Unterstützung, CUDA-Isolation oder einen Kernel-Stack benötigt, der nicht auf Proxmox installiert werden sollte. Die VFIO-Zuweisung trennt das Gerät vom Host und stellt es dem Gast zur Verfügung.

Das PCI-Modell von Proxmox ist darauf ausgelegt, ein physisches PCI-Gerät einer KVM-Gast-VM zuzuweisen. Eine Docker-Diskussion auf Level1Techs verdeutlicht die praktische Konsequenz: Eine VM nutzt die durchgereichte GPU normalerweise exklusiv, während LXC den Zugriff auf Host-Geräte zwischen Diensten teilen kann.

Diese Entscheidung kann sich ändern, wenn die GPU Mediated Devices oder SR-IOV unterstützt. Consumer-GPUs und Home-Server-Plattformen bieten jedoch keinen universellen Weg zur gemeinsamen Nutzung. Prüfen Sie IOMMU-Gruppen, das Zurücksetzen, die Firmware, die Display-Initialisierung und ob der Host diese GPU benötigt, bevor Sie ein Design auf exklusivem Passthrough aufbauen.

Docker in LXC fügt eine verschachtelte Verwaltungsebene hinzu

LXC bietet bereits Isolation auf Betriebssystemebene, und Docker fügt darin eine weitere Container-Laufzeit hinzu. Das kann effizient sein, führt jedoch verschachtelte Namespaces, cgroups, Speicher-Treiber, Capabilities und Mount-Verhalten ein. Einige Docker-Funktionen erfordern Verschachtelungsoptionen oder zusätzliche Berechtigungen im Proxmox-Container.

Eine VM stellt Docker einen herkömmlichen Linux-Host bereit. Die Docker-Dokumentation, Kernelmodule, das Firewall-Verhalten und die Speicher-Treiber lassen sich leichter interpretieren, weil der Gast seine Kernel-Konfiguration selbst verwaltet. Der Preis dafür ist ein vollständiges Gastbetriebssystem, reservierter Arbeitsspeicher, die Verwaltung virtueller Festplatten und eine zusätzliche Patch-Ebene.

Wählen Sie LXC nicht allein, um einige hundert Megabyte zu sparen, wenn die erforderliche Konfiguration einen privilegierten Container, weitreichende Geräteberechtigungen und undokumentierte Änderungen am Host erzwingt. Die Vorteile der schlanken Option schwinden, wenn jedes Upgrade davon abhängt, sich an Ausnahmen zu erinnern, die die VM innerhalb des Gasts kapseln würde.

Isolation und Sicherheit können den Leistungssieger umkehren

LXC verwendet den Kernel des Hosts gemeinsam. Daher kann ein falsch konfigurierter privilegierter Container oder eine zu weit gefasste Gerätezuordnung mehr vom Proxmox-Knoten offenlegen als beabsichtigt. Nicht privilegiertes LXC, gezielte Geräteberechtigungen, schreibgeschützte Einbindungen und minimale Funktionen verbessern die Abgrenzung, die Architektur bleibt jedoch stärker gekoppelt als bei einer vollständigen VM.

Eine VM stellt einen separaten Kernel bereit und kann proprietäre GPU-Stacks, Docker-Netzwerke, Firewall-Module und experimentelle Software vom Proxmox-Basissystem isolieren. Diese Trennung ist wertvoll, wenn der Docker-Host Images von Drittanbietern, öffentliche Dienste, lokale KI-Pakete oder häufige Treiberexperimente ausführt.

Die VM ist nicht automatisch sicher. PCI-Passthrough, gemeinsam genutzte Speichereinbindungen, Verwaltungseinstellungen und überbrückte Netzwerke schaffen weiterhin Angriffs- und Fehlerpfade. Wählen Sie sie, wenn der unabhängige Kernel und die Treibergrenze das Bedrohungs- und Wartungsmodell tatsächlich vereinfachen.

Backups und Migration begünstigen unterschiedliche Arten von Einfachheit

LXC-Backups sind kompakt und schnell, da der Gast keinen vollständigen virtuellen Hardware-Stack enthält. Das Wiederherstellen des Hardwarezugriffs auf einem anderen Proxmox-Knoten erfordert jedoch übereinstimmende Geräteknoten, Gruppen, Treiber und Berechtigungen. Das Containerdateisystem kann migriert werden, die Vereinbarung für das physische Gerät jedoch nicht.

Ein VM-Backup enthält das Gastbetriebssystem und die Treiberkonfiguration, wodurch die Anwendungswiederherstellung stärker in sich geschlossen ist. USB-Zuordnungen und PCI-Adressen müssen am Ziel weiterhin neu zugeordnet werden, und eine durchgereichte GPU kann die Live-Migration verhindern, da das physische Gerät an einen einzelnen Knoten gebunden ist.

Der Proxmox-Backup-Workflow von ZimaSpace deckt den Schutz von Gästen ab. Für diesen Vergleich ist eine Wiederherstellung erst abgeschlossen, wenn Docker startet und die von USB oder GPU abhängige Anwendung das Ersatzgerät erkennen kann.

Führen Sie vor der Auswahl des Gasttyps einen Test zur Gerätewiederherstellung durch

  1. Listen Sie jedes USB- und PCI-Gerät auf, das die Docker-Anwendungen benötigen.
  2. Entscheiden Sie, ob jedes Gerät mit dem Host geteilt oder einem einzelnen Gast zugewiesen werden soll.
  3. Testen Sie den Hosttreiber, den Geräteknoten, die UID-/GID-Zuordnung und die Docker-Berechtigungen für LXC.
  4. Testen Sie die IOMMU-Gruppierung, die Installation des Gasttreibers und das Zurücksetzen einer VM.
  5. Starten Sie den Proxmox-Host neu und bestätigen Sie, dass die Gerätezuordnung automatisch wiederhergestellt wird.
  6. Stellen Sie den Gast aus der Sicherung wieder her und erstellen Sie die Hardwarezuordnung anhand der Dokumentation neu.
  7. Wiederholen Sie den Test auf einem anderen kompatiblen Knoten, wenn Migration oder Hardwareaustausch wichtig sind.

Messen Sie das Anwendungsverhalten statt nur den Overhead des Gasts. Die Stabilität der Hardware-Transkodierung, die Wiederverbindung von USB-Geräten, Treiberaktualisierungen, die Wartung des Hosts und die Wiederherstellungszeit sind in der Regel wichtiger als ein kleiner CPU-Unterschied zwischen LXC und KVM.

Welcher Proxmox-Gast eignet sich für den Docker-Host?

Wann sollten Sie LXC wählen?

Wählen Sie LXC, wenn alle Workloads Linux-basiert sind, der Host die Treiber verwalten kann, USB-Geräte stabile Gerätepfade bereitstellen und eine GPU von mehreren Diensten gemeinsam genutzt werden soll. Lassen Sie den Container nach Möglichkeit unprivilegiert und dokumentieren Sie jede Geräte- und Gruppenzuordnung.

Wann sollten Sie eine VM wählen?

Wählen Sie eine VM, wenn der Docker-Host exklusiven Zugriff auf eine PCI-GPU, proprietäre oder experimentelle Treiber, eine stärkere Kernel-Isolierung oder eine einfachere Portabilität des gesamten Software-Stacks benötigt. Planen Sie ausreichend RAM und Speicherplatz für den Gast ein und testen Sie die Geräteinitialisierung nach einem Neustart.

Wann sollten Sie die Workloads aufteilen?

Führen Sie ressourcenschonende Medien- und USB-Dienste in LXC aus, während Sie exklusive GPU-Berechnungen, Windows-abhängige Tools oder nicht vertrauenswürdige Docker-Stacks in einer VM platzieren. Eine Proxmox-fähige Plattform kann beides unterstützen, aber jedes physische Gerät sollte einem dokumentierten Besitzmodell folgen.

FAQs

Kann Docker zuverlässig innerhalb eines unprivilegierten LXC ausgeführt werden?

Ja, für viele Workloads, aber Verschachtelung, Speicher-Treiber, Mounts, Netzwerke und der Gerätezugriff können zusätzliche Konfiguration erfordern. Testen Sie die genauen Docker-Funktionen und wechseln Sie nicht einfach zu einem privilegierten Container, nur um ein unerklärliches Berechtigungsproblem zu umgehen.

Kann eine GPU von einem LXC und einer VM gemeinsam genutzt werden?

Nicht gleichzeitig über ein gewöhnliches VFIO-Passthrough des gesamten Geräts. LXC kann ein vom Host verwaltetes Render-Gerät gemeinsam nutzen, während eine VM das Gerät normalerweise vom Host lösen muss. Unterstützung für SR-IOV oder vermittelte Geräte kann dies bei bestimmter Hardware ändern.

Welche Option ist besser für einen USB-Zigbee-Koordinator?

Beides kann funktionieren. LXC ist effizient, wenn ein stabiler Serial-by-ID-Pfad und zuverlässige Berechtigungen vorhanden sind. Eine VM ist übersichtlicher, wenn der Software-Stack oder Treiber des Koordinators unabhängig vom Proxmox-Host bleiben soll.

Abschließendes Urteil

Verwenden Sie LXC für einen Docker-Host, wenn USB- und GPU-Ressourcen über den Linux-Treiber-Stack des Proxmox-Hosts gemeinsam genutzt werden können und ein geringer Overhead wichtig ist. Verwenden Sie eine VM, wenn die Hardware dem Gast gehören soll, Treiber isoliert werden müssen oder die Wiederherstellung ein in sich geschlossenes Betriebssystem bewahren soll. Treffen Sie die Wahl anhand der Gerätezugehörigkeit und des Wiederherstellungsverhaltens – nicht in der Annahme, dass Container immer einfacher sind.

Produktvergleiche

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.