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