在哪里安装设备驱动让docker识别设备?
Where to install device drivers to make docker recognize the device?
我在 ubuntu 上有一些二进制文件 运行ning 可以控制各种设备,例如 onboard/usb wifi/bluetooth 芯片。有些芯片需要额外的驱动程序。
我的猜测是,仅将驱动程序安装到 docker 映像是不够的,主机 OS 必须具有驱动程序。这是正确的吗?
如果是,为什么 docker 图像在主机已经需要任何驱动程序的情况下根本不需要任何驱动程序? docker 图像如何正确委托给主机?这些是否需要为每个主机上的每个驱动程序进行硬编码 OS?
同样从这个角度来看,docker 比 VM 需要更多还是更少的硬编码?
我觉得答案可能取决于设备如何呈现给 docker 以及驱动程序必须 运行 的位置(例如内核 space 与用户 space) .
谢谢!
这取决于设备和驱动程序。大多数驱动程序需要来自内核的一些支持,在这些情况下,您的主机内核必须提供该功能。驱动程序的一些功能、依赖库和应用程序可能在用户空间中实现(例如包 libusb、usbutils...),您的容器应该安装这些包。而且,当 运行 您的容器时,您必须明确指示 Docker 以映射容器中的设备(任何 /dev/*)。您有两个选择:
- 使用
docker run
和选项 --device
- 在特权模式下使用
docker run
将设备映射为卷(选项 -v
)--privileged=true
我在 ubuntu 上有一些二进制文件 运行ning 可以控制各种设备,例如 onboard/usb wifi/bluetooth 芯片。有些芯片需要额外的驱动程序。
我的猜测是,仅将驱动程序安装到 docker 映像是不够的,主机 OS 必须具有驱动程序。这是正确的吗?
如果是,为什么 docker 图像在主机已经需要任何驱动程序的情况下根本不需要任何驱动程序? docker 图像如何正确委托给主机?这些是否需要为每个主机上的每个驱动程序进行硬编码 OS?
同样从这个角度来看,docker 比 VM 需要更多还是更少的硬编码?
我觉得答案可能取决于设备如何呈现给 docker 以及驱动程序必须 运行 的位置(例如内核 space 与用户 space) .
谢谢!
这取决于设备和驱动程序。大多数驱动程序需要来自内核的一些支持,在这些情况下,您的主机内核必须提供该功能。驱动程序的一些功能、依赖库和应用程序可能在用户空间中实现(例如包 libusb、usbutils...),您的容器应该安装这些包。而且,当 运行 您的容器时,您必须明确指示 Docker 以映射容器中的设备(任何 /dev/*)。您有两个选择:
- 使用
docker run
和选项--device
- 在特权模式下使用
docker run
将设备映射为卷(选项-v
)--privileged=true