在哪里安装设备驱动程序,使docker识别设备?

我有一些运行在Ubuntu的二进制文件,控制像板载/ USB无线/蓝牙芯片的各种设备。 一些芯片需要额外的驱动程序。

我的猜测是,仅仅将驱动程序安装到docker映像是不够的,主机操作系统必须有驱动程序。 它是否正确?

如果是的话,如果主机已经做了,为什么docker图像需要任何驱动程序呢? docker图像如何正确委托给主机? 是否需要对每个主机操作系统上的每个驱动程序进行硬编码?

同样从这个angular度来看,docker需要比VM更多或更less的硬编码吗?

我觉得答案可能取决于如何将设备呈现给docker以及驱动程序必须运行的位置(例如,内核空间vs用户空间)。

谢谢!

这将取决于设备和驱动程序。 大多数驱动程序需要来自内核的一些支持,在这种情况下,主机内核必须提供这些function。 一些驱动程序的function,依赖库和应用程序可能在用户空间中实现(例如,软件包libusb,usbutils …),并且您的容器应该安装这些软件包。 另外,在运行你的容器时,你必须明确指出Docker来映射容器中的设备(任何/ dev / *)。 你有两个select:

  1. 使用docker run选项--device
  2. 使用docker run将设备映射为特权模式下的卷(选项-v )–privileged --privileged=true