Compartir a través de


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

Tipo de dispositivo
GUID de clase de interfaz
GPIO
916EF1CB-8426-468D-A6F7-9AE8076881B3
Bus I2C
A11EE3C6-8421-4202-A3E7-B91FF90188E4
Puerto COM
86E0D1E0-8089-11D0-9CE4-08003E301F73
Bus SPI
DCDE6AF9-6610-4285-828F-CAAF78C424CC
Aceleración de DirectX por GPU
Vea la documentación sobre aceleración de la GPU

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.