あの日実行した
コンテナの名前を
僕達はまだ知らない。
Masahito Zembutsu @zembutsu
Open Source Conference 2016 Tokyo/Fall; Sponsored LT
Sakura Iot Platform+Zabbix demo
2
Linux (CentOS 7.2)
http://monitoring.pocketstudio.net /
(59.106.214.205 )
WebSocket 受信スクリプト(Perl)
↓
zabbix_sender で Zabbix に送信
↓
Zabbix でデータ収集・グラフ化・アクション
通信モジュール
3G/LTE
閉域網
WebSocket
Arduino
温湿度センサ
3
4
5
#!/usr/bin/perl
use strict;
use warnings;
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
$ua->websocket('wss://secure.sakura.ad.jp/iot-alpha/ws/xxxxxxxxxx/' => sub {
(略)
open(CMD, "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o $dat |");
print "Temp:",$dat,"¥n";
print "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o ",$dat,"¥n";
getWebSocket.pl
補足資料: WebSocketの取得とzabbix_sender
処理の流れ:
1. さくらの Iot Platform からの WebSocket を受信
2. データから、温度と湿度のデータを zabbix_sender で送信
6
7
ペットから家畜の時代へ。
/home/demo/sphinx-demo/arukas-image-build.sh
http://sphinx.docker.jp/
(59.106.220.93 )
+- /soruce/ ReSTドキュメント
+- /html/ HTML生成先
#!/bin/sh
if [ -e html ]; then
mv html archive/html.$(date +%s)
fi
docker build -t sphinx-demo .
docker run sphinx-demo
docker cp $(docker ps -lq):/opt/sphinx/build/html .
docker rm $(docker ps -lq)
docker build -t nginx-sample --file ./Dockerfile.nginx .
docker tag nginx-sample zembutsu/nginx-sample:latest
docker push zembutsu/nginx-sample:latest
image: nginx-sample:latest
Docker Hub
https://<name>.arukascloud.io
デモ概要:
Sphinx のコンテンツを Docker コンテナ化し
Arukas.io にデプロイ、公開する
arukas-image-build.sh
①
②
①
②
③
③ ④
④
①~③
⑤
⑤
SphinxコンテナNginxコンテナ自動生成
arukas-image-build.sh
処理の流れ:
1. sphinx-demo イメージに Sphinx のコンテンツを取り込む
2. ドキュメント生成後、Nginx イメージを作成してコンテンツを格納
3. Docker Hub のリポジトリにアップロード
#!/bin/sh
if [ -e html ]; then
mv html archive/html.$(date +%s)
fi
docker build -t sphinx-demo .
docker run sphinx-demo
docker cp $(docker ps -lq):/opt/sphinx/build/html .
docker rm $(docker ps -lq)
docker build -t nginx-sample --file ./Dockerfile.nginx .
docker tag nginx-sample zembutsu/nginx-sample:latest
docker push zembutsu/nginx-sample:latest
arukas-image-build.sh
FROM ubuntu:16.04
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install python-sphinx make
ADD . /opt/sphinx
WORKDIR /opt/sphinx
CMD make html
Dockerfile
FROM nginx:latest
ADD ./html /usr/share/nginx/html
Dockerfile.nginx
Ubuntu イメージが元
python-sphinx, make のセットアップ
カレントをコンテナの /opt/sphinx へ
作業ディレクトリの指定
デフォルトで make html (コンテンツ生成)
nginx イメージが元
./html をコンテナ内のドキュメント・ルートへ
html ディレクトリがあれば
日付付きバックアップ作成
sphinx-demo イメージ作成
sphinx-demo コンテナで HTML 生成
HTML をホストにコピーし、コンテナ削除
HTML を収容した nginx イメージを作成し
Docker Hub にアップロード (push)
手順:任意のコンテンツを Nginx イメージ化してデプロイ
1. sphinx.docker.jp (59.106.220.93) の demo アカウントに ssh ログイン
※さくらのクラウドです。ログインのためには公開鍵が必要です。
2. cd sphinx-demo (この中にファイルがあります)で移動します。
3. source/index.rst など、コンテンツを編集します(何かメッセージを残す)。
4. arukas-image-build.sh を実行し、Docker Hub に push します。
※ https://hub.docker.com/r/zembutsu/nginx-sample/tags/ の “Last Updated” を見ると、最新になります。
5. arukas にログインします。
6. 【新しいアプリケーションを作成】をクリックします。
7. 所定の項目を入力します。
• App Name:任意のアプリ名(Arukasで表示する名前)
• Image:zembutsu/nginx-sample
• Instance(インスタンス数)、Memory(メモリ)、Endpoint(ホスト名):任意
• Port:【80】または任意
• そのほか:デフォルト
8. 【アプリケーションを作成】をクリックします。
9. ダッシュボードの起動ボタン をクリックします。
10.アプリ名をクリックし、エンドポイントの URL を確認します。
11.ブラウザでエンドポイントを開き、コンテンツの反映を確認します。
Docker Hub
いつだって、いつまでだって、コンテナなんだ

あの日実行したコンテナの名前を僕達はまだ知らない。

  • 1.
  • 2.
    Sakura Iot Platform+Zabbixdemo 2 Linux (CentOS 7.2) http://monitoring.pocketstudio.net / (59.106.214.205 ) WebSocket 受信スクリプト(Perl) ↓ zabbix_sender で Zabbix に送信 ↓ Zabbix でデータ収集・グラフ化・アクション 通信モジュール 3G/LTE 閉域網 WebSocket Arduino 温湿度センサ
  • 3.
  • 4.
  • 5.
    5 #!/usr/bin/perl use strict; use warnings; useMojo::UserAgent; my $ua = Mojo::UserAgent->new; $ua->websocket('wss://secure.sakura.ad.jp/iot-alpha/ws/xxxxxxxxxx/' => sub { (略) open(CMD, "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o $dat |"); print "Temp:",$dat,"¥n"; print "zabbix_sender -z 127.0.0.1 -s ¥"Zabbix server¥" -k sakura_iot_temp -o ",$dat,"¥n"; getWebSocket.pl 補足資料: WebSocketの取得とzabbix_sender 処理の流れ: 1. さくらの Iot Platform からの WebSocket を受信 2. データから、温度と湿度のデータを zabbix_sender で送信
  • 6.
  • 7.
  • 8.
  • 9.
    /home/demo/sphinx-demo/arukas-image-build.sh http://sphinx.docker.jp/ (59.106.220.93 ) +- /soruce/ReSTドキュメント +- /html/ HTML生成先 #!/bin/sh if [ -e html ]; then mv html archive/html.$(date +%s) fi docker build -t sphinx-demo . docker run sphinx-demo docker cp $(docker ps -lq):/opt/sphinx/build/html . docker rm $(docker ps -lq) docker build -t nginx-sample --file ./Dockerfile.nginx . docker tag nginx-sample zembutsu/nginx-sample:latest docker push zembutsu/nginx-sample:latest image: nginx-sample:latest Docker Hub https://<name>.arukascloud.io デモ概要: Sphinx のコンテンツを Docker コンテナ化し Arukas.io にデプロイ、公開する arukas-image-build.sh ① ② ① ② ③ ③ ④ ④ ①~③ ⑤ ⑤
  • 10.
    SphinxコンテナNginxコンテナ自動生成 arukas-image-build.sh 処理の流れ: 1. sphinx-demo イメージにSphinx のコンテンツを取り込む 2. ドキュメント生成後、Nginx イメージを作成してコンテンツを格納 3. Docker Hub のリポジトリにアップロード #!/bin/sh if [ -e html ]; then mv html archive/html.$(date +%s) fi docker build -t sphinx-demo . docker run sphinx-demo docker cp $(docker ps -lq):/opt/sphinx/build/html . docker rm $(docker ps -lq) docker build -t nginx-sample --file ./Dockerfile.nginx . docker tag nginx-sample zembutsu/nginx-sample:latest docker push zembutsu/nginx-sample:latest arukas-image-build.sh FROM ubuntu:16.04 RUN apt-get -y update && apt-get -y upgrade RUN apt-get -y install python-sphinx make ADD . /opt/sphinx WORKDIR /opt/sphinx CMD make html Dockerfile FROM nginx:latest ADD ./html /usr/share/nginx/html Dockerfile.nginx Ubuntu イメージが元 python-sphinx, make のセットアップ カレントをコンテナの /opt/sphinx へ 作業ディレクトリの指定 デフォルトで make html (コンテンツ生成) nginx イメージが元 ./html をコンテナ内のドキュメント・ルートへ html ディレクトリがあれば 日付付きバックアップ作成 sphinx-demo イメージ作成 sphinx-demo コンテナで HTML 生成 HTML をホストにコピーし、コンテナ削除 HTML を収容した nginx イメージを作成し Docker Hub にアップロード (push)
  • 11.
    手順:任意のコンテンツを Nginx イメージ化してデプロイ 1.sphinx.docker.jp (59.106.220.93) の demo アカウントに ssh ログイン ※さくらのクラウドです。ログインのためには公開鍵が必要です。 2. cd sphinx-demo (この中にファイルがあります)で移動します。 3. source/index.rst など、コンテンツを編集します(何かメッセージを残す)。 4. arukas-image-build.sh を実行し、Docker Hub に push します。 ※ https://hub.docker.com/r/zembutsu/nginx-sample/tags/ の “Last Updated” を見ると、最新になります。 5. arukas にログインします。 6. 【新しいアプリケーションを作成】をクリックします。 7. 所定の項目を入力します。 • App Name:任意のアプリ名(Arukasで表示する名前) • Image:zembutsu/nginx-sample • Instance(インスタンス数)、Memory(メモリ)、Endpoint(ホスト名):任意 • Port:【80】または任意 • そのほか:デフォルト 8. 【アプリケーションを作成】をクリックします。 9. ダッシュボードの起動ボタン をクリックします。 10.アプリ名をクリックし、エンドポイントの URL を確認します。 11.ブラウザでエンドポイントを開き、コンテンツの反映を確認します。
  • 12.