Dispositivos en contenedores en Windows
De forma predeterminada, los contenedores de Windows tienen acceso mínimo a los dispositivos host, al igual que los contenedores de Linux. Hay ciertas cargas de trabajo en las que es beneficioso, o incluso imperativo, tener acceso y comunicarse con dispositivos de hardware host. En esta guía se tratan los dispositivos que se admiten en contenedores y cómo empezar.
Prerrequisitos
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 ejecutan en modo aislado del proceso.
- El host de contenedor debe ejecutar Docker Engine 19.03 o posterior.
Ejecución de un contenedor con un dispositivo
Para iniciar un contenedor con un dispositivo, use el siguiente comando:
docker run --isolation=process --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809
Debe reemplazar {interface class guid}
por un GUID de clase de interfaz de dispositivo adecuado, que se puede encontrar en la sección siguiente.
Para iniciar un contenedor con varios dispositivos, use el siguiente comando y encadene varios argumentos de --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 se identifiquen como implementando la clase solicitada se integrarán en el contenedor.
Esto significa que no va a asignar el dispositivo fuera del host. En su lugar, el anfitrión lo comparte con el contenedor. Del mismo modo, dado que va a especificar un GUID de clase, todos los dispositivos que implementan ese GUID se compartirán con el contenedor.
Qué dispositivos son compatibles
Actualmente se admiten los siguientes dispositivos (y sus GUID de clase de interfaz de dispositivo):
Importante
La compatibilidad con dispositivos depende del controlador. Intentar pasar los GUIDs de clase no definidos en la tabla anterior puede dar lugar a un comportamiento indefinido.
Compatibilidad con contenedores de Windows aislados de Hyper-V
Actualmente no se admite la asignación de dispositivos y el uso compartido de dispositivos para cargas de trabajo en contenedores de Windows aislados de Hyper-V.
Compatibilidad con contenedores Linux aislados por Hyper-V
Actualmente no se admite la asignación de dispositivos y el uso compartido de dispositivos para cargas de trabajo en contenedores de Linux aislados de Hyper-V.