#Raspberry Piについて
使用したラズパイは3B+です。(3Bでも動きました)
初期OSはRaspbian Stretch with desktop(Kernel version:4.14)
なお、Raspberry Pi 1xとzero(w)はCPUが異なるので現時点では最新版は動作しません。
バージョンを下げれば動くので、その方法も記載しました。
$ uname -a
Linux raspberrypi 4.19.42-v7+ #1219 SMP Tue May 14 21:20:58 BST 2019 armv7l GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.8 (stretch)
Release: 9.8
Codename: stretch
#Dockerのインストール
公式blogに記載の方法で入ります。
sudo使わなくて済むようにdockerグループにユーザーを追加します。(再ログイン後に反映される)
自動起動の設定も必要かも。
$ curl -sSL https://get.docker.com | sh
$ sudo usermod -aG docker pi
$ sudo systemctl enable docker
$ docker --version
Docker version 18.09.0, build 4d60db4
Raspberry Pi 1x and zero(w)
Raspi1xとzero(w)の場合、バージョンは表示されますが動作していません。CPUが古いのが原因とのこと。
詳細は、docker-ce segmentation fault on Raspbian (v18.09.03) #38175
$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
$ sudo systemctl status docker.service
(抜粋)
docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: failed (Result: core-dump)
以下のようにしてdocker-ceをダウングレードします。
$ sudo apt install docker-ce=18.06.3~ce~3-0~raspbian
$ sudo apt autoremove
$ sudo systemctl enable docker && sudo systemctl start docker
動作確認
$ docker --version
Docker version 18.06.2-ce, build 6d37f41
$ sudo systemctl status docker.service
(抜粋)
docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running)
docker-composeも動きませんが、そっちはわからないです・・・。
Docker-composeのインストール
公式サイトにはRaspberryPi用のバイナリが置いていないため、ソースコードからビルドするしかないです。
少し前まで情報がなくて大変でしたが、Dockerfileで出来るようになっていました。
手順を書いてあるサイトは多いですが、エラーが出たりするので、情報をマージしたものです。
ブランチを変更しないと、最新にはDockerfile.armhfが入っていません。
ネットで調べると出てくる、Dockerfileをコピーして作る方法だと、Dockerfile内の
RUNTIME_DEBIAN_VERSION=stretch-20190326-slim
でエラーになります。RUNTIME_DEBIAN_VERSION=stretch-slim
に修正するとbuildはできますが、その先でエラーになります。
$ git clone https://github.com/docker/compose.git
$ cd compose
$ git checkout bump-1.23.2
$ sed -i -e 's:^VENV=/code/.tox/py36:VENV=/code/.venv; python3 -m venv $VENV:' script/build/linux-entrypoint
$ sed -i -e '/requirements-build.txt/ i $VENV/bin/pip install -q -r requirements.txt' script/build/linux-entrypoint
$ docker build -t docker-compose:armhf -f Dockerfile.armhf .
ビルドに30分~1時間程度かかります。
$ docker run --rm --entrypoint="script/build/linux-entrypoint" -v $(pwd)/dist:/code/dist -v $(pwd)/.git:/code/.git "docker-compose:armhf"
これでdocker-composeのバイナリができるので、移動して完了です。
$ sudo cp dist/docker-compose-Linux-armv7l /usr/local/bin/docker-compose
$ sudo chown root:root /usr/local/bin/docker-compose
$ sudo chmod 0755 /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01
ビルドに使ったdockerイメージは削除してかまいません。