2016-10-26 7 views
1

Ich versuche, die i2c-Pins auf einem Raspberry Pi in einem Docker Container zu verwenden. Installiere ich alle meine Module RUN verwenden, aber wenn ich die CMD verwenden, um meine Python-Programm i einen Fehler ausführen, dieI2C in einem Docker Container

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

sagt, wenn ich diese auf meinem Raspberry Pi laufen und nicht in meinem Behälter funktioniert es gut. Aber wenn ich meine i2c-Pins auf meinem Himbeer-Pi ausschalte, gibt es mir den gleichen Fehler, wenn ich es laufe. Ich weiß, dass es damit zu tun hat, dass meine i2c-Pins aktiviert sind. Weiß jemand, wie man dieses Problem löst?

Antwort

2

Aus Sicherheitsgründen sind Systemgeräte in Docker-Containern standardmäßig nicht verfügbar. Sie können spezifische-Geräte an den Behälter mit der --device Option docker run, wie in belichten:

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

Sie alle Einschränkungen mit der --privileged Flagge entfernen:

docker run --privileged myimage 

Dadurch werden alle /dev aussetzen zu Ihrem Container, und entfernen Sie auch andere Einschränkungen (zB können Sie die Netzwerkkonfiguration im Container ändern und neue Dateisysteme mounten).

+0

Danke, das hat Wunder für das getan, was ich wollte. –

+0

Irgendwelche Ideen über Docker-komponieren? – dmigo

+0

Docker komponieren bietet Unterstützung für so ziemlich alle "docker run" -Option. Siehe [docs] (https://docs.docker.com/compose/compose-file/) für das Äquivalent zu '--device'. – larsks

Verwandte Themen