Delen via


Apparaten binnen containers in Windows

Windows-containers krijgen standaard minimale toegang tot hostapparaten, net als Linux-containers. Er zijn bepaalde werkbelastingen waar het nuttig of zelfs imperatief is om toegang te krijgen tot en te communiceren met hosthardwareapparaten. In deze handleiding wordt beschreven welke apparaten worden ondersteund in containers en hoe u aan de slag kunt gaan.

Voorwaarden

Deze functie werkt alleen als uw omgeving voldoet aan de volgende vereisten:

  • Op de containerhost moet Windows Server 2019 of Windows 10 versie 1809 of hoger worden uitgevoerd.
  • De containerbasisafbeeldingversie moet 1809 of hoger zijn.
  • Uw containers moeten Windows-containers zijn die worden uitgevoerd in de proces-geïsoleerde modus.
  • Op de containerhost moet Docker Engine 19.03 of hoger worden uitgevoerd.

Een container draaien met een apparaat

Gebruik de volgende opdracht om een container met een apparaat te starten:

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

U moet de {interface class guid} vervangen door een geschikte guid van de apparaatinterfaceklasse. Deze vindt u in de onderstaande sectie.

Als u een container met meerdere apparaten wilt starten, gebruikt u de volgende opdracht en voeg meerdere --device argumenten samen.

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

In Windows declareren alle apparaten een lijst met interfaceklassen die ze implementeren. Door dit commando door te geven aan Docker, zorgt dit ervoor dat alle apparaten die worden herkend als implementatie van de gevraagde klasse in de container worden geplaatst.

Dit betekent dat u het apparaat niet van de host toewijst. In plaats daarvan deelt de host deze met de container. Omdat u een klasse-GUID opgeeft, alle apparaten die deze GUID implementeren, worden gedeeld met de container.

Welke apparaten worden ondersteund

De volgende apparaten (en hun GUID's van de apparaatinterfaceklasse) worden momenteel ondersteund:

Apparaattype
Interfaceklasse GUID
GPIO-
916EF1CB-8426-468D-A6F7-9AE8076881B3
I2C Bus
A11EE3C6-8421-4202-A3E7-B91FF90188E4
COM-poort
86E0D1E0-8089-11D0-9CE4-08003E301F73
SPI Bus
DCDE6AF9-6610-4285-828F-CAAF78C424CC
DirectX GPU Acceleration
Zie GPU-versnelling documenten

Belangrijk

Apparaatondersteuning is afhankelijk van stuurprogramma's. Als u probeert klasse-GUID's door te geven die niet zijn gedefinieerd in de bovenstaande tabel, kan dit leiden tot niet-gedefinieerd gedrag.

Ondersteuning voor Hyper-V-geïsoleerde Windows-containers

Apparaattoewijzing en apparaatdeling voor workloads in Hyper-V-geïsoleerde Windows-containers worden momenteel niet ondersteund.

Ondersteuning voor Hyper-V-geïsoleerde Linux-containers

Apparaattoewijzing en het delen van apparaten voor workloads in Hyper-V-geïsoleerde Linux-containers worden momenteel niet ondersteund.