Condividi tramite


Dispositivi nei contenitori in Windows

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

Prerequisiti

Per il corretto 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 successiva.
  • La versione dell'immagine di base del contenitore deve essere 1809 o successiva.
  • I contenitori devono essere contenitori windows in esecuzione in modalità isolata dal processo.
  • L'host contenitore deve eseguire il motore Docker 19.03 o versione successiva.

Eseguire un contenitore con un dispositivo

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

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

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

Per avviare un contenitore con più dispositivi, utilizzare il comando seguente concatenando 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 implementate. Passando questo comando a Docker, si assicura che tutti i dispositivi che si identificano come implementanti la classe richiesta verranno collegati nel contenitore.

Ciò significa che non stai assegnando il dispositivo all'host. Invece, l'host lo condivide con il contenitore. Analogamente, poiché si specifica un GUID di classe, tutti i dispositivi che implementano tale GUID verranno condivisi con il contenitore.

Quali dispositivi sono supportati

I dispositivi seguenti (e i RELATIVI GUID della classe di interfaccia dispositivo) sono attualmente supportati:

tipo di dispositivo
GUID della 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
Vedere
documentazione accelerazione GPU

Importante

Il supporto del dispositivo dipende dal driver. Il tentativo di passare GUID di classe non definito nella tabella precedente può comportare un comportamento non definito.

Supporto per contenitori Windows isolati da Hyper-V

L'assegnazione dei dispositivi e la condivisione dei dispositivi per i carichi di lavoro nei contenitori Windows isolati hyper-V non sono attualmente supportati.

Supporto per i container Linux isolati Hyper-V

L'assegnazione dei dispositivi e la condivisione dei dispositivi per i carichi di lavoro nei contenitori Linux isolati hyper-V non sono attualmente supportati.