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:
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
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.