我在ubuntu上运行了一些二进制文件,可以控制各种设备,如板载/ usb wifi /蓝牙芯片。一些芯片需要额外的驱动程序。
我的猜测是仅仅将驱动程序安装到docker镜像是不够的,主机操作系统必须有驱动程序。这是对的吗?
如果是,为什么如果主机已经存在,则docker镜像需要任何驱动程序? docker image如何正确委托给主机?这些是否需要为每个主机操作系统上的每个驱动程序进行硬编码?
同样从这个角度来看,docker是否需要比VM更多或更少的硬编码?
我觉得答案可能取决于设备如何呈现给docker以及驱动程序必须运行的位置(例如内核空间与用户空间)。
谢谢!
答案 0 :(得分:4)
这取决于设备和驱动程序。大多数驱动程序需要来自内核的一些支持,在这些情况下,主机内核必须提供功能。一些驱动程序的功能,依赖库和应用程序可以在用户空间中实现(例如包libusb,usbutils ......),并且您的容器应该安装这些包。而且,在运行容器时,必须明确指示Docker将容器中的设备映射(任何/ dev / *)。您有两种选择:
docker run
与选项--device
docker run
将设备映射为特权模式-v
--privileged=true
)
醇>