Dispositivi nei contenitori in Windows

Per impostazione predefinita, ai contenitori di Windows viene concesso l'accesso minimo ai dispositivi host, come per i contenitori di Linux. Esistono determinati carichi di lavoro in cui è vantaggioso, o addirittura necessario, accedere e comunicare con i dispositivi hardware host. Questa guida illustra i dispositivi supportati nei contenitori e come iniziare a usarli.

Requisiti

Per il funzionamento di questa funzionalità, l'ambiente deve soddisfare i requisiti seguenti:

  • L'host contenitore deve eseguire Windows Server 2019 o Windows 10, versione 1809 o successive.
  • La versione dell'immagine di base del contenitore deve essere 1809 o successive.
  • I contenitori devono essere contenitori di Windows in esecuzione in modalità di isolamento del processo.
  • L'host contenitore deve eseguire il motore Docker 19.03 o versioni successive.

Eseguire un contenitore con un dispositivo

Per avviare un contenitore con un dispositivo, usa il comando seguente:

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

Devi sostituire {interface class guid} con un GUID della classe di interfaccia del dispositivo appropriato, disponibile nella sezione seguente.

Per avviare un contenitore con più dispositivi, usa il comando e la stringa seguenti con più argomenti --device:

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

In Windows tutti i dispositivi dichiarano un elenco di classi di interfaccia che implementano. Passando questo comando a Docker, si garantisce che verrà eseguito il plumbing di tutti i dispositivi che implementano la classe richiesta nel contenitore.

Ciò significa che non assegni il dispositivo all'host. L'host lo condivide invece con il contenitore. Analogamente, poiché specifichi un GUID di classe, tutti i dispositivi che implementano tale GUID verranno condivisi con il contenitore.

Dispositivi supportati

Attualmente sono supportati i dispositivi (e i relativi GUID della classe di interfaccia del dispositivo) seguenti:

Tipo di dispositivo
GUID classe di interfaccia
GPIO
916EF1CB-8426-468D-A6F7-9AE8076881B3
Bus I2C
A11EE3C6-8421-4202-A3E7-B91FF90188E4
Porta COM
86E0D1E0-8089-11D0-9CE4-08003E301F73
Bus SPI
DCDE6AF9-6610-4285-828F-CAAF78C424CC
Accelerazione GPU DirectX
Vedi la documentazione relativa all'accelerazione GPU

Importante

Il supporto del dispositivo è dipendente dal driver. Il tentativo di passare i GUID della classe non definiti nella tabella precedente può causare un comportamento indefinito.

Supporto di contenitori di Windows con isolamento Hyper-V

L'assegnazione e la condivisione dei dispositivi per i carichi di lavoro nei contenitori di Windows con isolamento Hyper-V non sono attualmente supportate.

Supporto di contenitori di Linux con isolamento Hyper-V

L'assegnazione e la condivisione dei dispositivi per i carichi di lavoro nei contenitori di Linux con isolamento Hyper-V non sono attualmente supportate.