昨夜、400人あまりの参加希望がある中で、運良く参加者枠に滑り込めた「Docker Meetup Tokyo #2 」へ行ってきました。 遅刻してしまい、19:15頃からの内容のみではありますが、せっかくですので、ノートを残しておこうと思います。
概要
- 2014-04-11 @ Google Japan
タイムテーブル 18:30 開場 19:00-19:30 @mainyaa:今からでも間に合うDocker基礎+Docker 0.9概要+Docker 0.10概要 19:30-20:00 @ten_forward:Linuxカーネルのコンテナ関連機能入門 20:00-20:30 @naoya_ito:Dockerアプリケーションのポータビリティ 20:30-21:00 休憩&懇親タイム(ビール&ピザ) 21:00-22:00 LT(1人5分) @inokara:コンテナ内で複数のサービスを管理する試み @smokeymonkey:Docker +serverspecで作るconfigspec CI @takipone:Docker meets AWS OpsWorks @futoase:Aiming解析チームでのDockerの利用 @syoyo:GCE+Docker+etcdでレイトレ @kazunori_279:Dockerなら5分!Fluentd + Norikra + Google Spreadsheetでつくるリアルタイム・ダッシュボード @deeeet:Dockerによるアプリケーションの開発/デプロイ @DG0426:Docker地雷n本勝負 @jxta:Data Center to Distributed Cloud
@mainyaa:今からでも間に合うDocker基礎+Docker 0.9概要+Docker 0.10概要
- Dockerfile
- P.16
- Dockerfileの一部を変えても、成功部分は実行しないため、テ ストやCIが非常に高速になる
- AUFS
- P.18
- 親のOSイメージは共有できる→ハイパーバイザー型に比べて有利
- Copy on write
-
- 差分が出るまでは書き込みが出ないから、省メモリ・省ディスク。
- 制約
- P.25
- まだまだProductionでは難しいと思う。
- (とはいえ、興味深いですよね。)
- Docker 0.9
- P.29
- できたてほやほや
- Execution driver – 足回りが抽象化されている LXC必須ではなくなった
- Docker 0.10
- P.30
- おととい出た
- 企画〜発表まで、バージョンが2あがってるwww
- systemdサポートなどなど
- Docker 1.0に向けて
- P.31
- Production 品質を目標とする
- 商用サポートの実現
@ten_forward:Linuxカーネルのコンテナ関連機能入門
- 明日は大阪で勉強会www
- rpmbuildするときに、クリーンな環境でビルドする際に使ってる。なるほどそれはいい。
- メリット
- 高密度で起動する事ができる。オーバーヘッドが小さいメリットがここに出る。
- 起動が速い。プロセス上がるだけ。
- 仮想化、というより隔離化。
- デメリット
- Linux以外ダメ。Linuxのカーネルの上で動いているから、ね。
- Kernelに関わる操作は制限される。ホストのカーネルを借りているから、ね。
- Linuxカーネルバージョンとコンテナ
- P.15
- 3.12.8以前だとLXCに若干問題アリって、相当新しいカーネルが要求される…
- Namespace の種類
- P.17
- コンテナの肝は Namespace
- PID namespace: 親から子のPIDは見える。すなわち、親のPID空間を使ってる。
- しかし、これだと子から親のプロセスを止められる。おそろしや。UbuntuとかだとAppArmorで押さえ込んでたけど、やばいね。
- See also: http://d.hatena.ne.jp/defiant/20131011/1381487129
- P.18 ぐらいから、親と子を隔離する仕組みが整えられた。IPC, User, Network Namespace。
- Dockerでもcgroupを活用して、リソースを絞り込む事が出来る。
- P.21
- このあたりはcgroupsの基本的な話が分かっていれば大丈夫そうだ。
- Dockerであがっているプロセス丸ごと絞れるので、直接プロセスを制御するより楽でいいかもしれない。
- LXCとlibvirtは、実装は全然別です!!!
- LXC 1.0
- P.26
- ひっちゃかめっちゃかになっていた部分を、きちんと整理している。特にCLIツール。
- Ubuntu 14.04に乗っけるためにあわせてきている。
- ドキュメントも整備されてきている。日本語のMan Pageもついてきた。今は英日のみ。
- CentOS テンプレートも出来たよ!!!
- 日本語ドキュメント 査読者大募集中!!!
@naoya_ito:Dockerアプリケーションのポータビリティ
- 2つの文脈
- P.2
- Dockerコンテナが下層を抽象化する – 今日はここを掘り下げて行く
- Disposableな制約によりアプリケーションの再現可能性が要求される
- Jira
- P.6
- https://www.atlassian.com/ja/software/jira
- Dockerイメージをあげておけば、インストール方法がわからなくてもイメージをそのまま採用してもらえばいい。
- 某言語のWriteなんとかよりは…現実的だね。(Disってないよ!)
- もう一つのポータビリティ
- P.10
- See also: https://speakerdeck.com/naoya/immutable-infrastructuregakai-fa-purosesuniyu-eruying-xiang-jia-number-immutableinfra
- 毎度廃棄される→再現性が求められるっ!
- ステートレス + Shared nothing
- 全部、オンデマンドで環境を構築する。
- 誰がやっても、同じ手順で起動する。
- Herokuで動かす事をイメージすればOK。
- The Twelve-Factor App
- P.15
- See also:
- Demo: https://github.com/naoya/docker-paas-example
- プルリクされたプログラムの動作確認などを容易にしたい。
- ただ、Buildpackほどの柔軟性はいるの?
- 構造が複雑になるし、ビルドに時間もかかる。
- ある程度、処理系等をインストールしてあるdockerfileを作って、それを使ったほうが楽。
- なんとか3分クッキング!!!
その他
- 様々な分野の、アンテナが高い人がドンと集まってきた感じがする。
- LTもみんなアツかった。この後、じっくりスライドを読み直す。
- GCP $500クーポンを頂戴した。
- @inokara さんが、あのネタで本当に1年戦っていて驚いた。
- Togetter: Docker Meetup Tokyo #2 #dockerjp
おわりに
- ハイパーバイザー型とは違い、コンテナ型はCopy on Writeを通じて計算機資源を有効利用できる点がポイント高い。
- cgroupsを活用したリソースの絞り込みは、もっと積極的に使ってもいいかも。
- 現段階では、クリーンな開発・テスト・ビルド環境の構築で活用するのがよさそう。プロダクション環境への適用は、引き続き調査を続けよう。
- とはいえ、内容が非常に濃かった。これをすぐ全部理解するのはかなり難しそうなので、掘りたい所から掘って行こうと思う。
- AS/400にはLPARがあったのに、どうしてDockerが出た時にこんなに持ち上がっているのか、ちょっと興味がある。
ご挨拶させていただいた皆様、及び幹事の皆様、どうもありがとうございました。そして、お楽しみ様でした!