Compartilhar via


Dispositivos em contêineres no Windows

Por padrão, assim como os contêineres do Linux, os contêineres do Windows recebem acesso mínimo aos dispositivos de host. Em certas cargas de trabalho é benéfico, ou até mesmo obrigatório, acessar e se comunicar com dispositivos de hardware de host. Este guia aborda quais dispositivos têm suporte em contêineres e como começar a usá-los.

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 de contêiner deve ser 1809 ou posterior.
  • Seus contêineres devem ser contêineres do Windows em execução no modo isolado de processo.
  • O host do contêiner deve estar executando o mecanismo do Docker 19.03 ou mais recente.

Executar um contêiner com um dispositivo

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

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

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

Para iniciar um contêiner com vários dispositivos, use o comando e a cadeia de caracteres a seguir junto com 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 eles implementam. Ao passar esse comando para o Docker, ele garantirá que todos os dispositivos identificados que estão implementando a classe solicitada sejam inseridos no contêiner.

Isso significa que você não está atribuindo o dispositivo fora do host. Em vez disso, o host está compartilhando-o com o contêiner. 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.

Quais dispositivos têm suporte?

No momento, os seguintes dispositivos (e seus GUIDs de classe de interface de dispositivo) têm suporte:

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

Importante

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

Suporte a contêineres do Windows isolados do Hyper-V

A atribuição e o compartilhamento de dispositivos para cargas de trabalho nos contêineres do Windows isolados do Hyper-V não tem suporte no momento.

Suporte a contêineres do Linux isolados do Hyper-V

A atribuição e o compartilhamento de dispositivos para cargas de trabalho nos contêineres do Linux isolados do Hyper-V não tem suporte no momento.