Docker Meetup Tokyo #3 に行ってきました

2014-07-05 イベント

Dockerに興味はあっても使ったことのなかった自分ですが、2014/07/04に開催されたDocker Meetup Tokyo #3に行ってきました!

もらったおみやげ。
Dockerステッカーが欲しかったのですが、どこにあるのかわかりませんでした…
デンシバちゃんかわいいですね。
あとGoogle Cloud Platform starter packの$500クーポンをもらったので、そのうちなんか試してみたいです。

さて、Docker Meetupに行くのは今回が初めてだったのですが、運用やアーキテクチャの話など興味深い話が多かったので、振り返りも兼ねて内容をまとめていきたいと思います。
なお、リアルタイムで参加者がTweetした内容がTogetterにまとまっているようなのでそちらも併せて見ていただくと面白いかもしれません。(@yoshidashingoさん、まとめありがとうございます!)

Orchestration Tools

最初の発表は@philwhlnさんの「Orchestration Tools」。
Stackatoの中の人らしく、如何にDockerを協調動作させるためにツールを使っているか、というお話でした。
カナダの方のようですが、最初の自己紹介やバックグラウンドの説明は日本語で、それ以降もところどころ日本語混じりの発表で面白かったです。
資料は探したけれど見つからなかったので、インターネットには上げられてないのかもしれません。残念。
自分の英語ヒアリング力が低い&前提知識を抑えきれてないので若干怪しいのですが、内容をざっとかいつまむと、

1マシン1コンテナは簡単だけど、1マシン複数コンテナだとコンテナ同士の協調作業が複雑になり、複数マシン複数コンテナでは非常に煩雑になる。
このオーケストレーションを行うために、コンテナを集約して必要なサービス同士をつなぎ合わせるService Discoveryや、隣り合うコンテナがランダムに状態を監視しあうHealth Check、各コンテナで出るログを集約するLog Stash、自身の状態を診断してコンテナ自体の再起動を行うSelf Healingなどの技術がある。
これらを実現するために沢山のテクノロジーがあり、日進月歩で新たなツールが出てきている。
これらを全部把握して使いこなすのは難しいので、もうPaaS使おうよ←結論

といった感じの話をされていた気がします。
…これについては資料見なおせずTweetを頼りに記憶を掘り起こしているので、ほんとに怪しいです。いろいろ間違っていたらすみません。
とはいえコンテナ同士の協調動作のための諸概念とツールの現状が分かり、次以降の発表の前提知識も補完できたのでありがたかったです。

Dockerでデプロイ&モニタリング

続けての発表は@stanakaさんの「Dockerでデプロイ&モニタリング」。
はてなのCTOさんです。偉い人だ!

発表内容はタイトル通りDockerでデプロイとモニタリングをするための知識について。
ただどちらかと言うとモニタリングの話寄りだった気がします。
”>こちらも調べた限りでは資料は見当たりませんでした。
2014/07/14 追記:アップロードされました! stanakaさんありがとうございます!

こちらもざっと内容をまとめると、

Dockerモニタリングの基本はcgroupの作法に従う。コンテナ内から見てもコンテナ毎の情報は見えずホスト全体の情報しか見えないので、ホスト側から監視する。
/sys/fs/cgroup/下にコンテナIDのディレクトリがあり、その中にあるcpuacct.statなどでCPU時間を、memory.statなどでメモリ使用率を、共通レポートでdocker topと同様の情報を取得できる。

dockerで環境を構築するには、1ホストに複数コンテナを立てる方法と1ホストに1コンテナのみを立てる方法があり、前者は開発・CIなど、後者はプロダクション向き。
デプロイにはDocker Hubを使い、Githubへdockerfileをpush -> Dockerhubがautomated build -> Hubotがデプロイ、という流れで行う。ただしHubotでのデプロイはまだ実験段階。

実際の監視にはMackerelをつかってモニタリングしている。
サービスとロールの2つの軸でサーバを管理でき、サービスを横断してロールごとの状況をモニタリングできる。これによりコンテナ自体が再起動して別インスタンスになっても継続した状況を見ることができる。
agentの導入は、mackarel-dockerプラグイン(昨日作った)を使えばDockerコンテナのbuild時に自動でagentを起動し監視対象とすることができる。

といった感じでした。
普通にやったらホストごとの状況しか見れないというのは言われてみれば当然なんですが、インフラ寄りの知識がなくcgroupという単語自体初めて聞いたので非常に勉強になりました。

Dive into Dockerネットワーク

続いては@mainyaaさんの「Dive into Dockerネットワーク」。
DockerのネットワークがどうなってるのかDiveしてみてみよう、というお話です。
こちらは発表前から資料が上がっていました。ありがたや。