docker集装箱内的I2C

我正在尝试在Docker容器内的树莓派上使用i2c引脚。 我安装所有我的模块使用运行,但是当我使用CMD来运行我的Python程序,我得到一个错误,说

Trackback (most recent call last): file "test.py", line 124, in <module> bus = smbus.SMBus(1) IOError: [Errno 2] No such file or directory 

如果我在我的覆盆子pi上运行这个,而不是在我的容器,它运作良好。 但是,当我closures我的覆盆子pi上的i2c引脚时,运行时会出现同样的错误。 所以我知道这与我的i2c引脚被激活。 有谁知道如何解决这个问题?

作为安全预防措施,系统设备在Docker容器内不会默认暴露。 您可以使用--device选项将特定设备公开给docker run ,如下所示:

 docker run --device /dev/i2c-0 --device /dev/i2c-1 myimage 

您可以使用--privileged标志删除所有限制:

 docker run --privileged myimage 

这会将所有的/dev都暴露给你的容器,并删除其他限制(例如,你将能够改变容器中的networkingconfiguration并装载新的文件系统)。