surga Lab

開発したい!!

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

Docker

今まではCPUの違いから導入できなかったみたいですが、現在では公式にサポートされているようです。
また、hypriotがDocker同梱のOS(Raspbianベース?)を用意しているので、それを利用する方法もあります。

今回は標準のRaspbianへ後から導入します。

導入

公式ブログが一番わかりやすいと思います。

www.raspberrypi.org

どうやらコマンド1つで入るようです。

$curl -sSL https://get.docker.com | sh

以下を打つと非root状態でも利用できるようになります。
再ログインが必要です。

$sudo usermod -aG docker [username]

ラズパイのCPUはARMなので、ほとんどのdockerは動きません。

テスト

とりあえず確認としてhypriotのdockerを動かしてみます。
hypriotとはARM向けのDockerをいろいろ準備してくれているすごい団体です。(たぶん)
ドクロが怖いです。

このサイトを参照させていただきました。

hammmm.hatenablog.com

$docker run -d -p 80:80 hypriot/rpi-busybox-httpd

ラズパイのアドレスをPCで覗くとhypriotの画像が現れます。

http://192.168.xxx.xxx

f:id:hisurga:20170416224856p:plain

確認が終わったらpsで動作状況を確認し、stopで名前を指定して停止します。

$docker ps
$docker stop [NAME]

docker-compose

正直はまりました。
めっちゃはまりました。

ただネットの海は素晴らしく、ひたすら泳いでたら素晴らしい先人がいらっしゃいました。

www.berthon.eu

(始まりの文) I really like docker-compose

素晴らしいですね。

導入

では、上記サイトを参考にdocker-composeを入れていきます。
とはいっても特別に調整などは不要なので、参考にというかほとんどそのまま打てば問題ありません。

まずはdocker-composeをcloneしてローカルへファイルを準備します。

$ git clone https://github.com/docker/compose.git

続いてARMへ対応するようにDockerfileの内容を置換していきます。

$ cd compose
$ cp -i Dockerfile Dockerfile.armhf
$ sed -i -e 's/^FROM debian\:/FROM armhf\/debian:/' Dockerfile.armhf
$ sed -i -e 's/x86_64/armel/g' Dockerfile.armhf

ビルドして走らせます。
結構時間がかかります。

$ docker build -t docker-compose:armhf -f Dockerfile.armhf .
$ docker run --rm --entrypoint="script/build/linux-entrypoint" -v $(pwd)/dist:/code/dist -v $(pwd)/.git:/code/.git "docker-compose:armhf"

dist以下ファイルをbinへ移動させ、コマンドで起動できるようにします。

$ ls -l dist/
$ 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.13.0dev, build ae2cc6b
docker-py version: 2.2.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016