在docker容器内的I2C

时间:2016-10-26 15:12:41

标签: docker raspberry-pi i2c

我正在尝试在docker容器内的raspberry pi上使用i2c引脚。我使用RUN安装所有模块,但是当我使用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上运行它而不是在我的容器中运行它可以正常工作。但是当我关闭我的覆盆子pi上的i2c引脚时,它在运行时会给我同样的错误。所以我知道它与我的i2c引脚被激活有关。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

作为安全预防措施,默认情况下系统设备不会在Docker容器中公开。您可以使用--device的{​​{1}}选项将特定的设备公开到您的容器中,如下所示:

docker run

您可以使用docker run --device /dev/i2c-0 --device /dev/i2c-1 myimage 标记删除所有限制:

--privileged

这会将所有docker run --privileged myimage 暴露给您的容器,并删除其他限制(例如,您将能够更改容器中的网络配置并装入新的文件系统)。

答案 1 :(得分:0)

您应该在 docker-compose 中使用以下内容(使用 docker-compose 规范的 v3 测试):

devices:  
  - "/dev/i2c-1:/dev/i2c-1"