#はじめに
めちゃくちゃややこしいタイトルになってしまいましたがこんなイメージです
#環境
開発PC:Mac Mojave
RaspBerry Pi4 メモリ4GB
SDカード16GB
#Ubuntu19.10をSDに書き込む
https://ubuntu.com/download/raspberry-pi
から64bit版をダウンロードしてbalenaEtcharを使って書き込みました。
#dockerをUbuntuにインストール
Ubuntuにsshかなんかで入って
sudo apt-get install docker-ce
でインストールできます。
sudo usermod -aG docker ubuntu
でsudo使わなくてもdockerできます。
#ベースイメージを作る
開発PCでpython scriptを書いてからDockerfileでdockerImageにコピーしてもよいのですが、わかりづらかったので一度Dockerfileでベースを作ってから、コンテナに入りそのコンテナからイメージを作ります。
Dockerfileです
Raspberry Pi で TensorFlow する Docker 環境構築
を参考にさせていただきました、この記事ほぼほぼ上を参考にしました。
rpi.gpioを入れたかったのですが入れ方よくわかんなかったのでそのまま記述してます
FROM resin/rpi-raspbian:stretch
RUN echo "deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi firmware" > /etc/apt/sources.list
RUN apt-get update -y
RUN apt-get install -y --no-install-recommends \
vim git less wget \
build-essential \
libatlas-base-dev \
python3-pip python3-dev python3-setuptools\
python3-scipy python3-h5py \
libraspberrypi-bin \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN pip3 install --upgrade pip setuptools
RUN pip3 install rpi.gpio
あとはbuildします
docker build -t rpi/rpi:0.1 .
docker imagesでできてることを確認しましょう!できてるはずです。
#コンテナを起動してpythonスクリプトを書く
先ほど作ったイメージからコンテナを起動します。
docker run --name rpi_test -ti --privileged rpi/rpi:0.1 /bin/bash
で、コンテナの中に入るので、欲しいものをインストールします。nano派なので
sudo apt-get update
sudo apt-get install nano
homeに移動してscriptを作ります。
この辺ほんとは作業ディレクトリとか設定するのがよいのだろうな・・・
cd home
nano test.py
GPIO17にLEDをさして適当にLチカするプログラムです。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
while True:
GPIO.output(11, True)
time.sleep(2)
GPIO.output(11, False)
time.sleep(2)
スクリプトを保存したら
exit
でログアウトしてください
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e700d8490be8 rpi/rpi:0.1 "/usr/bin/entry.sh /…" 11 minutes ago Exited (0) 6 seconds ago rpi_test
コンテナが止まっています。このコンテナからイメージを作るには
docker commit rpi_test rpi/rpi:0.2
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rpi/rpi 0.2 50f7f2a406e7 2 minutes ago 622MB
scriptが保存してあるイメージができました。
#起動
sudo docker run --privileged -it -d --name rpi -w /home rpi/rpi:0.2 python3 test.py
バックグラウンドでコンテナが動いてLちかし続けます!
止めたい時は docker stop rpiでとまります
#まとめ
センサーデータとかもそのうちとりたい