Raspberry Pi⽤コンテナを
さくらのクラウドでビルドする
IoT・エッジコンピューティング向けCI/CD開発環境の⼀環として
2019/04/18
q-tech Meeting X
“Special Day” @⽯狩D.C.
(C) Copyright 1996-2019 SAKURA Internet Inc
さくらインターネット研究所 上級研究員 菊地 俊介さくらインターネット株式会社
発表内容
• IoTやそれを発展させたサイバーフィジカル・コンピュー
ティングによる、実世界(現場)の⾼度化が今ホット。
• さくらインターネット研究所も「『超個体型データセン
ター』を⽬指す」研究ビジョンを発表、コンピューティン
グリソースが現場に溶け込んでいく(近)未来の実現にむ
けて、クラウドと現場をシームレスに繋ぐ技術の研究開発
を推進。
• 現場の⾼度化(IoT)の実装に今⼀番便利なのは
Raspberry Pi。
• Raspberry Piによるシステムの開発の⾼度化(CI/CD)
の⼀環として、⾼速コンテナビルド環境についてご紹介。
2
⾃⼰紹介
菊地 俊介 (1974年⽣まれ、東京都出⾝、品川区在住)
4
所属 さくらインターネット研究所
経歴 早稲⽥⼤学⼤学院 卒
富⼠通(株)富⼠通研究所
ネットの研究やったり、トイレIoT作ったり
さくらインターネット研究所
データ流通実証実験、OpenFogコンソーシアム、
AR/VR、量⼦(アニーリング)コンピュータ
専⾨ エッジ・Fogコンピューティング
(分散系システムのあたり)
趣味 新技術調査、家庭内IoT、⾞、鉄道
IoTといえばラズパイ
• 最もお⼿軽なIoTマシン。
• GPIOが使えて、Linuxが動く。
• すでにエコシステム(豊富な3rdパーティ部品、開発ノウハ
ウ)が確⽴。
4
研究所で実施中のラズパイを⽤いた試作品
ラズパイでの開発⼿法
• プロトタイピングでは...
• ラズパイ本体にキーボード・ディスプレイを接続。
• ssh経由でリモート接続してコード開発。
5
• 本番環境に近くなってくると...
• ⾮⼒な環境で開発効率が上がらない。
• 台数多くなってくると、デプロイ作業が⼤変。
プログラム
開発マシン
ラズパイ
…
ラズパイでもDocker(コンテナ)使えます
• ラズパイにDockerをインストールして、コンテナを実⾏さ
せることができる。
• 更にKubernetesをインストールしてオーケストレーションも可能。
6
コンテナ
開発マシン …
Docker
ラズパイ
DockerFile
ラズパイでもDocker(コンテナ)使えます、が...
• ラズパイにDockerをインストールして、コンテナを実⾏さ
せることができる。
• 更にKubernetesをインストールしてオーケストレーションも可能。
7
コンテナ
開発マシン …
Docker
コンテナビルドが遅い...
• コンテナビルドは、ラズパイ⾃⾝で実施しなければならない
• ⾮⼒なノード
• ノードのネットワーク接続環境に依存(⾃宅WiFiェ...)
• なんですが...
ラズパイ
DockerFile
ラズパイでもDocker(コンテナ)使えます、が...
• ラズパイにDockerをインストールして、コンテナを実⾏さ
せることができる。
• 更にKubernetesをインストールしてオーケストレーションも可能。
8
コンテナ
開発マシン …
Docker
コンテナビルドが遅い...
• コンテナビルドは、ラズパイ⾃⾝で実施しなければならない
• ⾮⼒なノード
• ノードのネットワーク接続環境に依存(⾃宅WiFiェ...)
それ、さくらのクラウドでできるよ︕
• なんですが...
ラズパイ
DockerFile
さくらのクラウド上で、ラズパイ⽤コンテナをビルドする
• さくらのクラウド上の仮想マシンにARMエミュレー
ション環境を作って、ラズパイ⽤コンテナ(バイナ
リ)をビルドする。
9
開発マシン ラズパイ
Docker
さくらのCloud
DockerFile
コンテナビルド
[root@fogregistry qemu]# docker run --rm --privileged multiarch/qemu-user-static:register
...<snip>...
[root@fogregistry qemu]# uname -a
Linux fogregistry 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@fogregistry qemu]# docker build -t armhf-artful-vim -f Dockerfile .
...<snip>...
[root@fogregistry qemu]# docker run -it --rm armhf-artful-vim:latest bash
root@e8418d14f0e5:/# uname –a
Linux e8418d14f0e5 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 armv7l armv7l armv7l GNU/Linux
root@e8418d14f0e5:/# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for
GNU/Linux 3.2.0, BuildID[sha1]=c2fac9c07846ccd7daa2c96126fa93ce863b2ea4, stripped
root@e8418d14f0e5:/# exit
exit
[root@fogregistry qemu]#
dockerコンテナ内にQemuによる
エミュレーション環境を作るコマンド
ARM7lエミュレーション環境下でコン
テナビルドするコマンド
コンテナを実⾏させてみ
ると、armv7lになって
いる︕
この時点ではクラウド上
のx86として⾒えている
まとめ
• IoTやサイバーフィジカルコンピューティングにはラ
ズパイが便利︕
• ラズパイでもDocker (+Kubernetes)でコンテナ&
オーケストレーション環境が作れます。
• でもラズパイは⾮⼒なのでコンテナビルドが遅い︕
• プロセッサアーキテクチャを超えて、x86サーバでも
ラズパイ⽤(Armv7lの)コンテナビルドできます︕
• (おまけ)
• Qemu環境ではなくARMネイティブ環境となるARMサーバ
クラウド(試験環境)も提供できるかも...︖
10

Raspberry Pi用コンテナをさくらのクラウドでビルドする