Freigeben über


Geräte in Containern unter Windows

Standardmäßig erhalten Windows-Container nur minimalen Zugriff auf Hostgeräte – genau wie Linux-Container. Es gibt bestimmte Workloads, bei denen es von Vorteil ist – oder sogar zwingend notwendig – um auf Host-Hardware-Geräte zuzugreifen und mit ihnen zu kommunizieren. In diesem Handbuch wird erläutert, welche Geräte in Containern unterstützt werden und wie Sie beginnen.

Voraussetzungen

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

  • Der Containerhost muss Windows Server 2019 oder Windows 10, Version 1809 oder höher, ausführen.
  • Ihre Container-Basisimageversion muss 1809 oder höher sein.
  • Ihre Container müssen Windows-Container sein, die im prozessisolten Modus ausgeführt werden.
  • Der Containerhost muss Docker Engine 19.03 oder höher ausführen.

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äteschnittstellenklassen-GUIDersetzen, die im folgenden Abschnitt zu finden ist.

Um einen Container mit mehreren Geräten zu starten, verwenden Sie den folgenden Befehl und verketten Sie mehrere --device-Argumente:

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 der Schnittstellenklassen, die sie implementieren. Durch das Übergeben dieses Befehls an Docker wird sichergestellt, dass alle Geräte, die als zur angeforderten Klasse gehörend erkannt werden, in den Container eingebunden werden.

Dies bedeutet, dass Sie das Gerät nicht vom Host weg zuweisen. Stattdessen teilt der Host ihn mit dem Container. Analog dazu gilt: Da Sie eine Klassen-GUID angeben, werden alle Geräte, die diese GUID implementieren, für den Container freigegeben.

Welche Geräte unterstützt werden

Die folgenden Geräte (und ihre GUIDs der Geräteschnittstellenklasse) 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
Siehe GPU-Beschleunigung Dokumentation

Wichtig

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

Unterstützung für Hyper-V-isolierte Windows-Container

Gerätezuweisung und Gerätefreigabe für Workloads in hyper-V-isolierten Windows-Containern werden derzeit nicht unterstützt.

Hyper-V-isolierte Linux-Containerunterstützung

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