14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RaspberryPi3のRaspbianにdocker-hypriotをinstallしてiexをお手軽に試す

Posted at

やりたいこと

RaspberryPiのプロビジョニングが面倒くさいのでdockerを利用してみたかった。
お手軽実験キットとして扱うにしてもそこらへんはスピード感を持って動かしたい。
arm製だからか、オプションつきビルドをしないと動かないOSSライブラリがありそう。。

DockerをPiにインストールする

方法1.HypriotOSを利用する

この方法を利用すると、dockerがプリインストール済みの状態で利用可能となるが、
flushコマンドを利用せずにRaspberryPi3で動作確認したところ、WiFiのドライバが正しく認識されずに、network接続が有線LANのみで可能だった。flushコマンドを利用して後日確かめてみようと思う。

方法2.Raspbianにdocker-hypriotをinstallする

方法1.でいくしかないのか、と思っていたので、下記のblogを見つけて、おー、っとなった。

ssh pi@raspberrypi.local
sudo apt-get install -y apt-transport-https
wget -q https://packagecloud.io/gpg.key -O - | sudo apt-key add -
echo 'deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ wheezy main' | sudo tee /etc/apt/sources.list.d/hypriot.list
sudo apt-get update
sudo apt-get install -y docker-hypriot
sudo systemctl enable docker

上記だけでいけた。

昨晩試したところ、この手法でインストールされるdockerのバージョンは1.11.1だった。

pi@raspberrypi.local:~ $ sudo docker info
Containers: 2
 Running: 0
 Paused: 0
 Stopped: 2
Images: 1
Server Version: 1.11.1
Storage Driver: devicemapper
 Pool Name: docker-179:2-398823-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: ext4
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.075 GB
 Data Space Total: 107.4 GB
 Data Space Available: 25.53 GB
 Metadata Space Used: 1.614 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.146 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.90 (2014-09-01)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins: 
 Volume: local
 Network: bridge null host
Kernel Version: 4.4.9-v7+
Operating System: Raspbian GNU/Linux 8 (jessie)
OSType: linux
Architecture: armv7l
CPUs: 4
Total Memory: 925.5 MiB
Name: rptkt
ID: XXIQ:5TFC:5RQN:322P:3VE2:KM2G:LM5Y:KNHX:D7XN:SLBE:75DP:6FSX
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: No swap limit support
WARNING: No kernel memory limit support
WARNING: No cpu cfs quota support
WARNING: No cpu cfs period support
WARNING: No cpuset support

イメージを試しに作成してみる

ちょこちょこいじってみたところ、普通にdocker buildはできる様子。
docker hubでは、プレフィクスがrpi-とあるのが、Pi用のイメージ群のよう。

ベースとなるイメージにrpi-pythonを指定して、elixirをインストールしてみた。

FROM hypriot/rpi-python

RUN apt-get update
RUN apt-get install -y wget

RUN wget http://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && \
    dpkg -i erlang-solutions_1.0_all.deb && \
    sed -i -e "s/squeeze/wheezy/g" /etc/apt/sources.list.d/erlang-solutions.list && \
    apt-get update && \
    apt-get install -y erlang

RUN apt-get install -y git cmake build-essential

RUN git clone https://github.com/elixir-lang/elixir.git && \
    cd elixir && \
    git checkout v1.3 && \
    make clean && make && make install
pi@raspberrypi.local:~ $ sudo docker build -t letusfly85/rpi-elixir ./

Runしてみる

pi@raspberrypi.local:~ $ sudo docker run -it letusfly85/rpi-elixir iex
Erlang/OTP 18 [erts-7.1] [source] [smp:4:4] [async-threads:10] [kernel-poll:false]

Interactive Elixir (1.3.0-rc.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> 

所感

お手軽感がぐっとでてきた^^

TODO

  • elixirのビルドはちゃんとやらないとですね。。
  • serfはためしておきたい
  • redis, etcdもためしてみたい
  • k8s、consulもどっかで試してみたい
14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?