Docker海賊Hypriotを使ってRaspberry Pi上でゼロから任意アプリを15分で起動する方法

概要

HypriotというLinux Distributionを15分ぐらいでラズパイにインストールして、Dockerで楽にアプリを動かしたり、環境構築したりしようっていう話です。 問題が発生しない限り、ラズパイにキーボードやディスプレイをつける必要もないです。

※15分かどうかはダウンロード速度に主に依存するので、15分ですまなくてもどうかお許しください。

用意するもの

  • Raspberry Pi 2
  • Wifiドングル(USB接続, Raspberry Piと互換性のあるもの)
  • Mac OS Xのマシン + マイクロSDカードリーダ・ライタ
  • SSID, パスワードがわかっているWifiアクセスポイント

Raspberry Pi 2 を動かしていて不満なポイントは?

以下のようなことです。

  • apt-get等でインストールにかかる時間が馬鹿にならない。
  • バージョンの問題等で失敗することも多く、ごそごそ修正する羽目になる
  • しばらく環境をいじっていると、どこをどういじったかわからなくなり、クリーンな状態からどうすれば、動かしたいアプリの実行環境になるのか、完全には把握できなくなる。
  • (きっちりシャットダウンせずに)電源抜き差しすることでSDカードが壊れやすく、壊れると上記理由で復活が面倒でガッカリする

Dockerの利用

上記の問題点は最近話題のDockerでおおかた解決可能なものです。環境セットアップをDockerfileの形で書いて残しておくこと、イメージをビルドしたら、docker hub等のリポジトリにアップロードしておくことが必要ですが、それさえできれば、以下のようなメリットが得られます。

  • dockerだけ入った素の環境から、 docker run 一発で高速、自動的にアプリの動作環境が再現できる
  • Dockerfileがあれば、どう作られたかは明らか
  • 公式を含む、他の人が作ったDockerイメージも流用、派生できるため、大きなモジュールのインストールに時間を割く必要もない。

便利!

残る課題

しかしながら、Dockerだけでは解決しない問題があります。それは、Dockerを動かす環境自体を作るところも結構面倒ということです。少なくとも、以下のようなものが必要でしょう。

  • Wi-Fi認識
  • 接続先SSID、パスワードを指定する
  • avahiのインストール(Bonjourで なんとか.local というアドレスでアクセスできるようにする)

面倒だ!

Hypriot! (はいぷらいおっと?はいぷりおっと?)

そこで、HypriotというLinux Distributionの出番です。

公式: Docker Pirates ARMed with explosive stuff · Docker Pirates ARMed with explosive stuff

f:id:hammm:20160105020216p:plain

Hypriotのとくちょう

  • ロゴがドクロマークで怖そう。
  • 公式サイトの構成がイマイチで情報を探しにくい(汗)
  • RaspberryPi (ARM)で動作するDebianLinuxディストリビューション (基本はRaspbianらしいです)
  • 余分なプログラムが入っておらずサイズが小さい
  • Wifi, Bonjour (avahi), ssh等がセットアップ済みのイメージが用意されており、Wifiドングルさえ挿しておけば起動後、即sshで外部からのコントロールが可能
  • 最新のDocker/Docker Machineが入っており、すぐにDockerを利用できる。

まあ、要するにDockerに最適化された楽ちんなRaspberry Pi向けLinuxです。

※ ちなみに、ドクロの下にでかでかと "Docker Pirates ARMed with explosive stuff" とか書いてありますが、直訳すると 「爆発物を装備(ARM)したDocker海賊」みたいな感じで、Dockerと、Raspberry PiのCPUアーキテクチャであるARMをうまくひっかけつつカッチョいい感じのイメージにしたかったという意思がひしひしと伝わってきます。一部タイトルに頂きましたw

Hypriotのインストール手順 (Mac OS X向け)

今回はflashという名前の、hypriotが用意したスクリプトを使います。 このスクリプトは、Mac OS XLinux向けになっています。

Windowsの場合は、残念ながらこのスクリプトは使えません。 別の方法でSDカードにイメージを書き込んで、occidentalis.txtを手動で修正するなどしてください。

GitHub - hypriot/flash: Command line script to flash SD card images for the Raspberry Pi

続きを読む