Устройства в контейнерах в Windows
По умолчанию контейнеры Windows, как и контейнеры Linux, получают минимальный доступ к устройствам узла. При этом для определенных рабочих нагрузок желательно (или даже обязательно) иметь доступ к аппаратным устройствам узла и возможность взаимодействия с ними. В этом руководстве рассказывается о том, какие устройства поддерживаются в контейнерах и как приступить к работе.
Требования
Чтобы эта функция работала, среда должна соответствовать следующим требованиям.
- Узел контейнера должен работать под управлением Windows Server 2019 либо Windows 10 версии 1809 или более поздней.
- Необходимо использовать базовый образ контейнера версии 1809 или более поздней.
- Контейнеры должны быть контейнерами Windows, работающими в режиме изоляции процессов.
- На узле контейнера должен быть установлен модуль Docker Engine 19.03 или более поздней версии.
Запуск контейнера с устройством
Чтобы запустить контейнер с устройством, выполните следующую команду:
docker run --isolation=process --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809
Необходимо заменить {interface class guid}
соответствующим идентификатором GUID класса интерфейса устройства, который указан в следующем разделе.
Чтобы запустить контейнер с несколькими устройствами, используйте следующую команду и строку с несколькими аргументами --device
:
docker run --isolation=process --device="class/{interface class GUID}" --device="class/{interface class GUID}" mcr.microsoft.com/windows/servercore:1809
В Windows все устройства объявляют список классов интерфейса, которые они реализуют. Передача этой команды в Docker гарантирует, что все устройства, которые определяются как реализующие запрошенный класс, будут подключены к контейнеру.
Так можно избежать назначения устройства за пределами узла. Вместо этого узел предоставляет контейнеру общий доступ к этому устройству. Аналогично, поскольку вы указываете GUID класса, все устройства, которые реализуют этот GUID, будут использоваться совместно с контейнером.
Поддерживаемые устройства
На сегодняшний день поддерживаются следующие устройства (и их GUID класса интерфейса устройств).
|
|
---|---|
|
|
|
|
|
|
|
|
|
|
Важно!
Поддержка устройств зависит от драйвера. Попытка передать идентификаторы GUID класса, которые не определенные в приведенной выше таблице, может привести к неопределенному поведению.
Поддержка контейнеров Windows с изоляцией Hyper-V
Назначение устройства и общий доступ к нему для рабочих нагрузок в контейнерах Windows с изоляцией Hyper-V в настоящее время не поддерживается.
Поддержка контейнеров Linux с изоляцией Hyper-V
Назначение устройства и общий доступ к нему для рабочих нагрузок в контейнерах Linux с изоляцией Hyper-V в настоящее время не поддерживается.