Dispositivos en contenedores de Windows
De forma predeterminada, los contenedores de Windows tienen un acceso mínimo a los dispositivos host, al igual que los contenedores de Linux. Hay ciertas cargas de trabajo en las que es ventajoso o, incluso, imperativo acceder a los dispositivos de hardware del host y comunicarse con ellos. En esta guía se explica qué dispositivos se admiten en contenedores y cómo empezar a usarlos.
Requisitos
Para que esta característica funcione, el entorno debe cumplir los siguientes requisitos:
- El host de contenedor debe ejecutar Windows Server 2019 o Windows 10, versión 1809 o posterior.
- La versión de la imagen base del contenedor debe ser 1809 o posterior.
- Los contenedores deben ser contenedores de Windows que se ejecuten en modo de aislamiento de procesos.
- El host de contenedor debe ejecutar Docker Engine 19.03 o una versión más reciente.
Ejecución de un contenedor con un dispositivo
Para iniciar un contenedor con un dispositivo, ejecuta el siguiente comando:
docker run --isolation=process --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809
Tienes que reemplazar {interface class guid}
por un GUID de la clase de interfaz de dispositivo adecuado, que puedes encontrar en la sección siguiente.
Para iniciar un contenedor con varios dispositivos, usa el siguiente comando y cadena juntos varios argumentos --device
:
docker run --isolation=process --device="class/{interface class GUID}" --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809
En Windows, todos los dispositivos declaran una lista de clases de interfaz que implementan. Al pasar este comando a Docker, se asegurará de que todos los dispositivos que detecte que implementan la clase solicitada estén asociados al contenedor.
Esto significa que no asignas el dispositivo fuera del host. En su lugar, el host lo comparte con el contenedor. Del mismo modo, dado que estás especificando un GUID de clase, todos los dispositivos que implementen ese GUID se compartirán con el contenedor.
Qué dispositivos se admiten
Actualmente se admiten los siguientes dispositivos (y sus GUID de clase de interfaz de dispositivo):
Importante
La compatibilidad con los dispositivos depende del controlador. Si intentas pasar GUID de clase no definidos en la tabla anterior, se puede producir un comportamiento indefinido.
Compatibilidad con contenedores de Windows con aislamiento de Hyper-V
Actualmente no se admite la asignación de dispositivos ni el uso compartido de dispositivos para cargas de trabajo en contenedores de Windows con aislamiento de Hyper-V.
Compatibilidad con contenedores de Linux con aislamiento de Hyper-V
Actualmente no se admite la asignación de dispositivos ni el uso compartido de dispositivos para cargas de trabajo en contenedores de Linux con aislamiento de Hyper-V.