Dela via


Enheter i containrar på Windows

Som standard får Windows-containrar minimal åtkomst till värdenheter – precis som Linux-containrar. Det finns vissa arbetsbelastningar där det är fördelaktigt – eller till och med imperativt – att komma åt och kommunicera med värdmaskinvaraenheter. Den här guiden beskriver vilka enheter som stöds i containrar och hur du kommer igång.

Förutsättningar

För att den här funktionen ska fungera måste din miljö uppfylla följande krav:

  • Värd för containrar måste köra Windows Server 2019 eller Windows 10, version 1809 eller senare.
  • Din containerbasbildversion måste vara 1809 eller senare.
  • Containrarna måste vara Windows-containrar som körs i processisolerade läge.
  • Containervärden måste köra Docker Engine 19.03 eller senare.

Kör en container med en enhet

Om du vill starta en container med en enhet använder du följande kommando:

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

Du måste ersätta {interface class guid} med en lämplig GUID för enhetsgränssnittsklassen, som du hittar i avsnittet nedan.

Om du vill starta en container med flera enheter använder du följande kommando och sträng tillsammans flera --device argument:

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

I Windows deklarerar alla enheter en lista över gränssnittsklasser som de implementerar. Genom att skicka det här kommandot till Docker ser det till att alla enheter som identifierar sig som implementerar den begärda klassen kommer att skickas till containern.

Det innebär att du inte tilldelar enheten från värden. I stället delar värddatorn den med containern. Eftersom du anger ett GUID för klassen alla enheter som implementerar det GUID:et delas med containern.

Vilka enheter stöds

Följande enheter (och deras GUID för enhetsgränssnittsklass) stöds idag:

Enhetstyp
-gränssnittsklass GUID
GPIO
916EF1CB-8426-468D-A6F7-9AE8076881B3
I2C Bus
A11EE3C6-8421-4202-A3E7-B91FF90188E4
COM-port
86E0D1E0-8089-11D0-9CE4-08003E301F73
SPI Bus
DCDE6AF9-6610-4285-828F-CAAF78C424CC
DirectX GPU-acceleration
Se GPU-acceleration dokument

Viktig

Enhetsstöd är drivrutinsberoende. Om du försöker skicka klass-GUID:er som inte definierats i tabellen ovan kan det leda till odefinierat beteende.

Stöd för Hyper-V-isolerade Windows-containrar

Enhetstilldelning och enhetsdelning för arbetsbelastningar i Hyper-V-isolerade Windows-containrar stöds inte för närvarande.

Stöd för Hyper-V-isolerad Linux-container

Enhetstilldelning och enhetsdelning för arbetsbelastningar i Hyper-V-isolerade Linux-containrar stöds inte för närvarande.