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:
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.