KMC活動ブログ

京大マイコンクラブの活動の様子を紹介します!!

mesos+marathon+docker と slack の shell チャンネルの話

この記事はKMC Advent Calendar 2015 - Adventar 10日目の記事です。 9日目の記事は、hatsusatoさんのtemplate in C - KMC活動ブログでした。

部内で Effective C++ を読む勉強会のリーダーである hatsusatoさんの話は知見ばかりで面白いです

はじめに

KMC1回生 広報の wass80 https://twitter.com/wass80/ です

部室に駆逐艦と呼ばれる 5 台のPCのうち幾つかが余っていました

そのうちの 2 台をつかって, docker を自由に走らせられる環境を作ります

3 行でわかる docker とは

例えば以下のことが出来る

  • docker run -it ruby bash → 最新の ruby の使える bash に入る
  • docker build -t wass80/hoge . → 今のディレクトリの Dockerfile を読んで新しくイメージを作る
  • docker push wass80/hoge . → 作ったイメージを Docker hub にアップロード

強そう!

環境構築篇

この記事のリポジトリをおよそ流用させてもらいました

瞬殺で作るMesos + Chronos + Marathon + Dockerクラスタ環境 - Qiita

2台の駆逐艦 abukuma と hibiki で

  • abukuma は vagrant で mesos-master と mesos-slave を分離した
  • hibiki は mesos-slave のみで運用

ここに環境構築に使ったファイルをおいておきます

wass80/Ikonusuk · GitHub

Docker イメージ作成篇

Docker で走らせたいものとして, slack にある #shell チャンネルのボットがありました

f:id:kmc-log:20151210033151p:plain

物騒なチャンネルですね

このボットは $ から始まる発言をサブシェルで走らせて標準出力を返すボットです

今回はこの子を Docker で走らせたいと思います

ボットを書いた人からスクリプトをもらって, Dockerfileをつけて

即席完成品: wass80/shell-ch · GitHub

(公開する許可を得ることを失念しておりましたので、公開を停止しました。モラルに反する行為を行ったことを反省しています。)

  • docker build -t wass80/shellch .
  • docker push wass80/shellch

を実行

いまさら聞けないDocker入門(3):Dockerfileとdocker buildコマンドでDockerイメージの作成 (1/2) - @IT

これで, docker のあるところならば, どこでもボットを動かせるようになりました

※ push 前には docker hub に登録が必要です

Docker Hubのpush / pullを試す - Qiita

デプロイ篇

さいごに作った環境でボットを動かします

Marathon をブラウザで開いて [Create] をクリック

f:id:kmc-log:20151210034245p:plain

伏せたところには Slack の web api token を入れて, 以上の設定で実行

Ruby - slack api で bot を作ってみた - Qiita

f:id:kmc-log:20151210034345p:plain

デプロイ成功!

Docker をもっと手軽に!

もっと簡単に Docker を試してみたいなら

arukas.io

が楽ちん! Docker イメージを指定するだけでデプロイが無料で出来る! (β期間中)

いますぐ, github アカウントでログインだ!

それとも, 余ってるサーバで遊びたい? なら KMC に入部しよう!

www.kmc.gr.jp

お粗末さまでした

今後

安全性を高める技術を勉強したいです


明日, 11日目は suzusime さんによる「“面白い”フリーソフトのはなし(仮) 」です