LoginSignup
31
23

More than 3 years have passed since last update.

Raspberry Pi にDockerとDocker-composeを入れる

Last updated at Posted at 2019-06-21

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イメージは削除してかまいません。

31
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
23