37
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Raspberry Piにdockerとdocker-composeを入れてみた

前回はラズパイへの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

今回はここまでです!

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
37
Help us understand the problem. What are the problem?