前回はラズパイへのOSの書き込みを行いました。
今回の記事では、Raspberry Piへのdockerとdocker-composeの構築について書きます。
環境
- Raspberry Pi 3 Model B+
- Raspbian 9.11(stretch)
- Kernel 4.19.66-v7+
$ uname -a
# Linux raspberrypi 4.19.66-v7+ #1253 SMP Thu Aug 15 11:49:46 BST 2019 armv7l GNU/Linux
$ lsb_release -a
# No LSB modules are available.
# Distributor ID: Raspbian
# Description: Raspbian GNU/Linux 9.11 (stretch)
# Release: 9.11
# Codename: stretch
dockerのインストール
まずdockerのインストールを行います。
dockerの公式ページを参考にインストールしていきます。
最初はapt
で入れようとしましたが、うまくいきませんでした。
Raspbianではスクリプトを使用したインストールを利用するのが良さそうです。
下記コマンドで簡単にインストールできました。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
バージョンが表示されればインストール成功です。
$ docker --version
# Docker version 19.03.5, build 633a0ea
次にユーザー権限の設定をしておきましょう。
これを行わないと後のdocker-composeのインストールでpermission denied
します。
$ sudo usermod -aG docker YOUR-USER
また、ラズパイの起動時にdockerが自動起動するように設定します。
設定完了したら再起動しておきましょう。
$ sudo systemctl enable docker
$ sudo reboot
docker-composeのインストール
次にdocker-composeのインストールを行います。
docker-composeのバージョン1.24.1までは公式サイトにラズパイ用のバイナリがなかったため、エラーと格闘しながらインストールしている記事が多々ありました。
しかし、1.25.0以降からマルチプラットフォームのビルド用のスクリプトを使用することで簡単にラズパイへのdocker-composeのインストールができるようになりました。
今回インストールするバージョンは1.25.3です。
まず、githubからクローンします。
最新バージョンは1.25.3
なので、ブランチをチェックアウトしておきます。(2020/1/29現在)
$ git clone https://github.com/docker/compose.git
$ cd compose
$ git checkout 1.25.3
次にビルド用スクリプトを用いてビルドします。
時間がかかるので気長に待ちましょう。
(途中で本当に動いてるのか不安になりましたが、一晩放置したら終了してました。よかった、、、)
$ ./script/build/linux
ビルドに成功していれば、dist
ディレクトリが作成され、その中にバイナリが生成されています。
実行してバージョンを確認してみましょう。
$ cd dist
$ ./docker-compose-Linux-armv7l version
# docker-compose version 1.25.3, build d4d1b42b
# docker-py version: 4.1.0
# CPython version: 3.7.5
# OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
生成されたバイナリの名前は、ビルドした環境に合わせたものになるようです。
今回の環境ではdocker-compose-Linux-armv7l
となっていました。
ちなみに、依存関係は以下のようになっています。
$ ldd docker-compose-Linux-armv7l
# linux-vdso.so.1 (0x7ec31000)
# /usr/lib/arm-linux-gnueabihf/libarmmem.so (0x76ee6000)
# libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x76ebf000)
# libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x76e98000)
# libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x76d59000)
# /lib/ld-linux-armhf.so.3 (0x76f23000)
このままではdocker-compose
のコマンドが使えないため、バイナリをbin
にコピーしましょう。
$ docker-compose version
# bash: docker-compose: command not found
$ sudo cp docker-compose-Linux-armv7l /usr/local/bin/docker-compose
$ sudo chown root:root /usr/local/bin/docker-compose
$ sudo chmod 755 /usr/local/bin/docker-compose
これでdocker-compose
コマンドが使用できるようになりました。
$ docker-compose version
# docker-compose version 1.25.3, build d4d1b42b
# docker-py version: 4.1.0
# CPython version: 3.7.5
# OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
今回はここまでです!