2016-10-26 12 views
1

ドッカー・コンテナ内のラズベリー・ピーにi2cピンを使用しようとしています。私はRUNを使用してすべての私のモジュールをインストールするが、私は私のPythonプログラムを実行するために、CMDを使用するとき、私は私が私のラズベリーパイでこれを実行すると、私の容器にそれが正常に動作しない場合はドッキング・コンテナ内のI2C

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

を言うエラーが出ます。しかし、ラズベリーパイのi2cピンをオフにすると、それを実行するときに同じエラーが表示されます。だから私はそれが私のi2cピンが活性化されていると関係があることを知っています。誰もこの問題を解決する方法を知っていますか?

答えて

2

セキュリティ上の予防措置として、システムデバイスはデフォルトでDockerコンテナ内に公開されていません。あなたは、docker run--deviceオプションを使用してコンテナに特定デバイスを公開することができますのように:

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

あなたは--privilegedフラグですべての制限を削除することができます。

docker run --privileged myimage 

これは/devの全てを公開します(例えば、コンテナ内のネットワーク構成を変更して新しいファイルシステムをマウントすることができます)。

+0

ありがとうございました。 –

+0

docker-composeに関するご意見はありますか? – dmigo

+0

Docker composeは 'docker run'オプションのほとんどすべてをサポートしています。 '--device'に相当するものについては、[the docs](https://docs.docker.com/compose/compose-file/)を参照してください。 – larsks

関連する問題