-
2014-04-11 19:00-22:00
-
Google 日本
-
Docker を使っている人は半分強
-
Docker をプロダクションで使っている人は5人くらい
プロジェクタが映らないので各自 SlideShare を見ながら発表を聞く形。
-
コンテナ仮想化
-
Dockerfile の行ごとにコンテナIDが作られ差分管理やロールバックなどができる
-
0.9 から LXC への依存がなくなった
-
AUFS で親コンテナからの差分を保存
-
64 bit の Linux 3.8 以降という制約
-
Docker 0.9 概要
- execution driver による足回り抽象化で LXC に依存しない
- libcontainer がデフォルト
-
Docker 0.10 概要
- おとといリリース
- systemd プラグイン
-
Docker 1.0 の目標
- プロダクション品質
- 小さなコアとプラグイン
- 商用サポート
-
ファーストサーバ
-
コンテナのメリット
- OS は一つで、ハードウェア仮想化が不要で、コンテナ内でプロセスが動いているだけ、仮想マシン上でも動く
- 仮想化というよりかは隔離化
-
コンテナのデメリット
- ホストOSで動くプログラムしか動かない、カーネルにかかわる操作はできない
-
Linux カーネルバージョンとコンテナ
- 3.0: setns システムコール
- 3.8: コンテナの主要機能がそろった
- 3.9: 主要機能が実用になった
-
Linux コンテナを実現するための機能
- Namespace
- cgroups
- chroot
- ネットワークやリソース制限など
-
Namespace の種類
- Mount namespace
- UTS namespace: ホスト名など
- PID namespace
- IPC namespace: セマフォなど
- User namespace: ホストに対する特権がなくなる
- Network namespace
-
Namespace の操作
- clone, unshare, setns
-
Cgroup
-
LXC の動向
- 2008年頃から開発スタート
- 2014年2月に 1.0.0 リリース
- 非特権
- クローンとスナップショット機能
- Ubuntu と合わせて 1.0 系は5年サポート
- テンプレートの充実で CentOS でも使えるようになった
-
https://speakerdeck.com/naoya/dockerapurikesiyonfalsepotabiriteiwokao-eru-number-dockerjp
-
アプリケーションをポータブルにすることの文脈
- Docker コンテナによる下層の抽象化
- Disposable による再現可能性の要求
-
Build once, run anywhere の例
- セットアップが大変な JIRA もイメージが公開されているので1コマンドで立ち上がる
-
デプロイ先がコンテナだと
- デプロイのたびにコンテナが破棄される
- そのためにアプリケーションに再現性が必須となる
-
再現可能にするには
- ステートレスかつ shared nothing
- 環境の明確化、抽象化、冪等化
- Bundler, Rack, Foreman
-
Tweleve-Factor App
-
- git push により Docker コンテナでアプリケーションを動かす
- post-update hook で docker run
- git clone して Buildpack 適用
-
作った感想
- Buildpack は柔軟で便利だがビルドに時間がかかったりする
- 指定された Ruby をビルドしたコンテナを Docker で作り置き
- 3分間クッキング
椅子が片づけられちゃったのでメモれてない。
- コンテナ内で複数のサービスを管理する試み
- Docker +serverspecで作るconfigspec CI
- Docker meets AWS OpsWorks
- Aiming解析チームでのDockerの利用
- @futoase (アカウント名間違ってる?)
- GCE+Docker+etcdでレイトレ
- Fluent Dashboard+Norikraでリアルタイムダッシュボードを7分で作る話
- Dockerによるアプリケーションの開発/デプロイ
- Docker地雷n本勝負
- Data Center to Distributed Cloud