あさのひとりごと

3日坊主にならないように、全力を尽くします。 記事は個人のひとりごとです。所属する組織の意見を代表するほど、仕事熱心じゃないです。

RaspberryPiでDockerを安定稼働させる(キリッ

このブログは、次のAdvent Calendarの12/10のエントリーです。

Raspberry Pi Advent Calendar 2015 - Adventar
横浜医療情報専門学校プログラミングサークル Advent Calendar 2015 - Adventar


今回は、RaspberryPiで、Dockerを「安定稼働」させてみたいと思います。


RaspberryPiとは?

Raspberry Pi(ラズベリーパイ)は、教育用に開発されたシングルボードコンピュータです。
ARMプロセッサを搭載し、OSをSDカードにインストールすることで動作します。

もっともハイスペックな「RaspberryPi2」は、ARM Cortex A7(4コア900MHz)、1GBメモリを搭載しています。
秋葉原秋月電子通商で、5400円。安っ。今回は、これを使います。
akizukidenshi.com


Dockerとは?

Docker(ドッカー)は、コンテナ仮想化環境でアプリケーションを管理/実行するためのオープンソースのミドルウエアです。
アプリケーションと実行環境をすべて含めて「Dockerイメージ」にパッケージングして管理できます。
www.docker.com



1.RaspberryPiのSD作成

RaspberryPiでDockerの実行環境がセットアップ済みのイメージが以下で公開されています。
ダウンロードしましょう!
最新版は、Version 0.6.1です。

Hypriot Docker Image
Downloads · Docker Pirates ARMed with explosive stuff


ダウンロードしたイメージからRaspberry Pi起動用のmicroSDカードを作成するため、「Win32 Disk Imager」というツールをダウンロード/インストールしてください。
Win32 Disk Imager 日本語情報トップページ - OSDN


Win32 Disk Imagerのインストールが完了したら、起動します。
ダウンロードしたHypriot Docker Imageのイメージファイルを指定して[Write]ボタンをクリック!
しばらくするとmicroSDカードへの書き込みが完了します。


2.RaspberryPi起動

作成したSDカードをセットして、RaspberryPiの電源をONします!
組み立て方などは、こちらで!

Raspberry Piで電子工作をはじめよう! ~まずはRasbian(OS)のセットアップから
codezine.jp



3.Dockerコンテナの起動

Hypriot Docker Imageは、起動するとDHCPからIPアドレスを取得します。
SSHでアクセスし、次のアカウントでログインします。

ユーザ名:root
パスワード:hypriot

次のコマンドで、Apache httpが動くDockerコンテナを起動します。

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

Apache httpdが動作していることを確認するために
ブラウザからRaspberryPiのアドレスの80番ポートにアクセスします。

超、簡単。
f:id:dr_asa:20151206210539j:plain

あたりまえですが、Dockerコマンドが利用できます。
さあ、DockerHubから、いい感じのイメージをpullして動かしてみましょう!

ここで注意したいことが。
DockerHub上で公開されているイメージの大半はx86/x64用のイメージです。
RaspberryPiはARMなので、ARM用のイメージでないと動きません。

ですが、世界中の有志がRaspberryPi用のイメージを
たくさん公開しているので、それをつかえばOKです。

RaspberryPi用のイメージは
「rpi-****」
と、プレフィックスにrpiが付きます。DockerHubで検索してみてください。
f:id:dr_asa:20151206210948j:plain



4.Hypriot Dockerのステッカーを作る

と、、、、、、これまでの話は
ほぼ、どうでもいい内容なので、時間のない方はスルーしても構いませんが
ここからは、大事な話になります。

RaspberryPiでDockerを動かす!というのは
その筋の人*1以外は、なんの面白味もない話です。
しかも、非力なRaspberryPiノードでDockerを動かして、一体誰得?ですし、
LEDが光るわけでもモーターが回るわけでもないので、それこそ言葉では形容しづらい地味さです。

1* カーネル関係者やネットワークガチ勢、クラスタ厨、自動化ヲタを指す


そこで、「RaspberryPiでDockerを動かしているんだぞ!」をアピールするために

Hypriot Dockerのステッカーを作ります。

画像はこちらですね。
http://blog.hypriot.com/images/jessie-release/one-to-rule-them-all_blog.jpg


ステッカー作成用紙は、A-ONEやELECOM、サンワサプライあたりのが、いい感じです。
ヨドバシカメラビックカメラなどの量販店で購入します。

私は、これを使いました。
www.a-one.co.jp


あとは、プリンタでロゴを印刷すると、ステッカーの出来上がりです。
ステッカーの注意書きにあるプリンタの設定に従うのが、きれいに作るコツです。
私はRaspberryPiのケースには貼らずに、PCの背面に貼っています。

これで、完成です。


5.Dockerの実行環境(物理)を整える

Dockerのアイコンは、Moby Dockというクジラがモチーフになっています。
f:id:dr_asa:20151206210834p:plain

Dockerでクラスタ環境を管理するDockerSwarmは
複数のクジラがコンテナを運んでいます。
f:id:dr_asa:20151206211406j:plain

Dockerコンテナをホスト上で一元管理するためのDockerComposeは、
タコです。
f:id:dr_asa:20151206210841p:plain

Dockerイメージを公開するためのDockerRegistryは
貝です。
f:id:dr_asa:20151206210847p:plain

と、ここまでくると勘のいい方は、もうお気づきかもしれませんね。
普通のRaspberryPiケースに入れたままでは、安定稼働するかどうか、、、大いに不安です。

そこで、こちらを使ってRaspberryPi+Dockerの実行環境を整えます。
www.amazon.co.jp


RaspberryPiのケースはこちらが良いでしょう。
smarticase.com


LEGOの組み立てには、2時間ぐらいかかりますが
Dockerが安定して動作する実行環境(物理)が整いました。
f:id:dr_asa:20151206210914j:plain

これでなんとか
あ、そういえばRaspberryPiでDocker動かしたんだけどさぁ、、
と、語ってよいレベルに到達することができました。



そして、「で、おまえ誰?」
codezine.jp

*1:

どんなAdvent Calendarを読んでいますか?

12月は、Advent Calendarの季節ですね。

「読むのに忙しくて、書く時間が無い!」
「書こうと思っていたネタを、ほかの人が出してるから書けない!すごく残念だ~!!」
という、もっともらしい言い訳を思いついたので、
みなさんぜひご活用ください。

皆さんは、どんなAdvent Calendarを読んでますか?
たくさんあって迷ってしまいますが
私が読んでいるAdvent Calendarを紹介します。


TIS Engineer Advent Calendar 2015

TISなエンジニアによるアドベントカレンダーです。
エンタープライズを支えている要素技術について書かれているもので
レイヤー低め系ネタが多いですが、内容はハイレベルで
非常に勉強になります。qiita.com


Java EE Advent Calendar 2015

JavaEE関連のAdvent Calendarです。
講義でJavaEEやるので、情報収集のために!qiita.com



HashiCorp Advent Calendar 2015

infrastructure管理ツールのHashiCorpプロダクトに関するAdvent Calendarです。 Atlas/Vagrant/Packer/Serf/Consul/Terraform/Vault/Nomad/Ottoあたりです。
やはり、大人女子としてはHashiCorpは押さえておきたいので。qiita.com



Ansible Advent Calendar 2015

構成管理ツールAnsibleに関するAdvent Calendarです。
宗教上の理由でChef派なのですが、一応。qiita.com



Machine Learning Advent Calendar 2015

機械学習関連のAdvent Calendarです。
算数の話で、難しく分からないことも多いのですが
認知症対策と思って読んでいます。qiita.com



SoftLayer Advent Calendar 2015

IBMのIaaSであるSoftLayerに関するAdvent Calendarです。
巷ではもっぱら、サーバレスアーキテクチャがトレンディなのですが
インフラエンジニアからネットワークと物理鯖を取って、
さらにOSまで取ったら
寂しくて死んでしまいます。qiita.com



AWS Advent Calendar 2015

AWSのざっくりしたところのAdvent Calendarです。qiita.com



Microsoft Azure Advent Calendar 2015

AzureのざっくりしたところのAdvent Calendarです。qiita.com



今年もやるよ!AWS Lambda縛り Advent Calendar 2015

Lambda関連のAdvent Calendarです。
卒業研究や講義なんかで手軽に使えそうな面白ネタを探す感じです。qiita.com



Docker Advent Calendar 2015

渋谷の10代女子に爆発的な人気と噂のプロダクト
Dockerに関するAdventCalendarです。qiita.com


しかし、ハイレベルな旬の話題が、どんどん出てくるので
ありがたい季節です。
お財布に優しい。

【書評】アプリを作ろう! Android入門 Android Studio版 Android5対応 読みました!

とある某専門学校で、Androidアプリ開発の講義を担当しているので
学生向けの資料作成の勉強!のため、読破しました。

http://www.amazon.co.jp/%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86-Android%E5%85%A5%E9%96%80-Android-Studio%E7%89%88-Android5%E5%AF%BE%E5%BF%9C/dp/482229644X/ref=sr_1_1?s=books&ie=UTF8&qid=1440762585&sr=1-1&keywords=Androidwww.amazon.co.jp

本書は
AndroidStudioをベースに
1章から丁寧な手順にしたがって進めれば
Androidアプリ開発の基礎知識や
開発環境の使い方や
画面レイアウトの作成/モデルクラスの実装
センサーを使った実装からアプリ公開の手順までを
学習できます。

専門学校で講義をしていて一番苦労することは
ずばり
「開発環境の構築」
です。

手順通りにやってください、という作業は
ほんの少しでも手順が不親切だと
あっという間にカオスな空間になります。

本書のように、手順だけでなく
設定内容の意味などがきちんと説明があるので
教育教材として、とても良いなと思いました。

あと、、、、、、、、
相手に分かりやすく伝えるには
「相手がなにが分からないか」を正しく知って
「相手になにを伝えるべきか」を正しく選ふ必要があります。

入門書は、
説明しづらいことや難しいことを「おまじない」としてしまうのもダメだけど
たくさんの情報をぎゅうぎゅう詰め込みすぎても、
「なにがポイントか?」が分からなくなってしまってダメなので
さじ加減がとても難しいのですが
本書は、とてもバランスが良くて勉強になりました。

高江さん、ありがとうございました!