我正在尝试在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引脚被激活有关。有谁知道如何解决这个问题?
答案 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"