Geräte in Containern unter Windows

Standardmäßig erhalten Windows-Container minimalen Zugriff auf Hostgeräte – genau wie Linux-Container. Es gibt bestimmte Workloads, bei denen es vorteilhaft (oder sogar erforderlich) ist, auf Hosthardwaregeräte zuzugreifen und mit ihnen zu kommunizieren. In diesem Leitfaden erfahren Sie, welche Geräte in Containern unterstützt werden und wie Sie die ersten Schritte unternehmen können.

Anforderungen

Damit dieses Feature funktioniert, muss Ihre Umgebung die folgenden Anforderungen erfüllen:

  • Auf dem Containerhost muss Windows Server 2019 oder Windows 10, Version 1809 oder höher, ausgeführt werden.
  • Ihre Basisimageversion für den Container muss 1809 oder höher sein.
  • Ihre Container müssen Windows-Container sein, die im prozessisolierten Modus ausgeführt werden.
  • Auf dem Containerhost muss das Docker-Modul 19.03 oder höher ausgeführt werden.

Ausführen eines Containers mit einem Gerät

Verwenden Sie den folgenden Befehl, um einen Container mit einem Gerät zu starten:

docker run --isolation=process --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809

Sie müssen die {interface class guid} durch eine entsprechende Geräteschnittstellenklasse-GUID ersetzen, die im folgenden Abschnitt zu finden ist.

Verwenden Sie zum Starten eines Containers mit mehreren Geräten den folgenden Befehl, und fügen Sie mehrere --device-Argumente aneinander:

docker run --isolation=process --device="class/{interface class GUID}" --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809

In Windows deklarieren alle Geräte eine Liste von Schnittstellenklassen, die sie implementieren. Indem dieser Befehl an Docker übergeben wird, stellt dieser sicher, dass alle Geräte, die die angeforderte Klasse implementieren, in den Container integriert werden.

Dies bedeutet, dass Sie nicht das Gerät vom Host entfernt zuweisen. Stattdessen nutzt der Host es gemeinsam mit dem Container. Ebenso werden, da Sie eine Klassen-GUID angeben, alle Geräte, die diese GUID implementieren, mit dem Container gemeinsam genutzt.

Welche Geräte werden unterstützt?

Die folgenden Geräte (und ihre Geräteschnittstellenklassen-GUIDs) werden heute unterstützt:

Gerätetyp
Schnittstellenklassen-GUID
GPIO
916EF1CB-8426-468D-A6F7-9AE8076881B3
I2C-Bus
A11EE3C6-8421-4202-A3E7-B91FF90188E4
COM-Anschluss
86E0D1E0-8089-11D0-9CE4-08003E301F73
SPI-Bus
DCDE6AF9-6610-4285-828F-CAAF78C424CC
DirectX-GPU-Beschleunigung
Weitere Informationen finden Sie in den Dokumenten zur GPU-Beschleunigung

Wichtig

Die Geräteunterstützung ist vom Treiber abhängig. Der Versuch, Klassen-GUIDs zu übergeben, die nicht in der obigen Tabelle definiert sind, kann zu undefiniertem Verhalten führen.

Unterstützung für Windows-Container mit Hyper-V-Isolation

Gerätezuweisung und Gerätefreigabe für Workloads in Windows-Containern mit Hyper-V-Isolation wird derzeit nicht unterstützt.

Unterstützung von Linux-Containern mit Hyper-V-Isolation

Gerätezuweisung und Gerätefreigabe für Workloads in Linux-Containern mit Hyper-V-Isolation wird derzeit nicht unterstützt.