Docker容器中的I2C

Dun*_*nke 3 i2c raspberry-pi docker

我正在尝试在docker容器内的树莓派上使用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
Run Code Online (Sandbox Code Playgroud)

如果我在树莓派上而不是在我的容器中运行它,则可以正常工作。但是,当我关闭树莓派上的i2c引脚时,在运行时会出现相同的错误。所以我知道这与我的i2c引脚被激活有关。有谁知道如何解决这个问题?

lar*_*sks 6

为了安全起见,默认情况下未在Docker容器内公开系统设备。您可以使用的选项将特定设备公开到您的容器--devicedocker run,如下所示:

docker run --device /dev/i2c-0 --device /dev/i2c-1 myimage
Run Code Online (Sandbox Code Playgroud)

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

docker run --privileged myimage
Run Code Online (Sandbox Code Playgroud)

这会将所有内容公开/dev给您的容器,并消除其他限制(例如,您将能够更改容器中的网络配置并安装新的文件系统)。