Partilhar via


Dispositivos em contêineres no Windows

Por padrão, os contêineres do Windows recebem acesso mínimo aos dispositivos host - assim como os contêineres do Linux. Há certas cargas de trabalho em que é benéfico - ou mesmo imperativo - acessar e se comunicar com dispositivos de hardware host. Este guia aborda quais dispositivos são suportados em contêineres e como começar.

Pré-requisitos

Para que esse recurso funcione, seu ambiente deve atender aos seguintes requisitos:

  • O host do contêiner deve estar executando o Windows Server 2019 ou o Windows 10, versão 1809 ou mais recente.
  • A versão da imagem base do contêiner deve ser 1809 ou posterior.
  • Seus contêineres devem ser contêineres do Windows em execução no modo isolado do processo.
  • O host do contêiner deve estar executando o Docker Engine 19.03 ou mais recente.

Executar um contêiner com um dispositivo

Para iniciar um contêiner com um dispositivo, use o seguinte comando:

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

Deve substituir o {interface class guid} por um GUID apropriado da classe de interface do dispositivo , que pode ser encontrado na seção abaixo.

Para iniciar um contêiner com vários dispositivos, use o seguinte comando e encadeie vários argumentos --device:

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

No Windows, todos os dispositivos declaram uma lista de classes de interface que implementam. Ao passar esse comando para o Docker, ele garantirá que todos os dispositivos identificados como implementando a classe solicitada serão encaminhados para o contêiner.

Isso significa que está não a atribuir o dispositivo para longe do host. Em vez disso, o host está a partilhar com o contentor. Da mesma forma, como você está especificando um GUID de classe, todos os dispositivos que implementam esse GUID serão compartilhados com o contêiner.

Que dispositivos são suportados

Os seguintes dispositivos, bem como os GUIDs das suas classes de interface, são suportados atualmente:

Tipo de Dispositivo
Classe de interface GUID
GPIO
916EF1CB-8426-468D-A6F7-9AE8076881B3
Ônibus I2C
A11EE3C6-8421-4202-A3E7-B91FF90188E4
Porta COM
86E0D1E0-8089-11D0-9CE4-08003E301F73
de ônibus SPI
DCDE6AF9-6610-4285-828F-CAAF78C424CC
Aceleração de GPU DirectX
Consulte de aceleração da GPU

Importante

O suporte a dispositivos depende dos controladores. A tentativa de passar GUIDs de classe não definidos na tabela acima pode resultar em comportamento indefinido.

Suporte para contentores Windows isolados por Hyper-V

Atualmente, não há suporte para atribuição e compartilhamento de dispositivos para cargas de trabalho em contêineres do Windows isolados do Hyper-V.

Suporte a contêineres Linux isolados do Hyper-V

Atualmente, não há suporte para atribuição e compartilhamento de dispositivos para cargas de trabalho em contêineres Linux isolados do Hyper-V.