Windows 上的容器中的设备
默认情况下,Windows 容器被授予对主机设备的最小访问权限,就像 Linux 容器一样。 在某些工作负荷中,访问主机硬件设备并与之通信是有益的,甚至是必要的。 本指南介绍了容器中支持哪些设备以及如何开始使用。
要求
要使此功能生效,你的环境必须满足以下要求:
- 容器主机必须运行 Windows Server 2019 或 Windows 10 版本 1809 或更高版本。
- 容器基础映像版本必须是 1809 或更高版本。
- 容器必须是在进程隔离模式下运行的 Windows 容器。
- 容器主机必须运行 Docker 引擎 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 可能会导致未定义的行为。
Hyper-V 隔离 Windows 容器支持
目前不支持为 Hyper-V 隔离 Windows 容器中的工作负荷进行设备分配和设备共享。
Hyper-V 隔离 Linux 容器支持
目前不支持为 Hyper-V 隔离 Linux 容器中的工作负荷进行设备分配和设备共享。