Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Presented by Asuka Suzuki
AP Communications
54 PAGES
Dockerが抱える
ネットワークの課題
2/54はじめに
●対象
・Dockerがどんな技術かご存じない方
●本日のゴール
・Dockerの概要/メリット/デメリットを知る
・ネットワークを例に、Dockerの課題を知る
3/54参考URL
本スライドの作成にあたり、
下記のページを参考にさせて頂きました。
Docker: Linuxコンテナを使ってアプリケーション
の配置を支援する
http://www.infoq.com/jp/articles/docker...
4/54本日のプログラム
Dockerとは?
ネットワークの課題
課題を解決するツールたち
Dockerの今後
Dockerの基礎
(長め)
まとめ
(ちょっとだけ)
Dockerの課題
(短め)
5/54本日のプログラム
Dockerとは?
ネットワークの課題
課題を解決するツールたち
Dockerの今後
Dockerの基礎
(長め)
Dockerの課題
(短め)
まとめ
(ちょっとだけ)
6/54アプリの配置は複雑
アプリの配置は複雑になるばかり…
ある物理サーバにWordpressを導入する場合
7/54こんな問題に直面します
1 依存関係・競合
2 セキュリティ
3 リソース保護
4 ポータビリティ・再現性
5 バックアップ・ロールバック
8/54依存・競合の問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: 既に別のサイトがnginxで動いている
既に別のサイトがnginxで動いていた。
WordpressはApach...
9/54依存・競合の問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: 既に別のサイトがnginxで動いている
既に別のサイトがnginxで動いていた。
WordpressはApach...
10/54セキュリティの問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: Wordpressは本当に安全?
残念ながら、完璧なソフトウェアなんて無い。
乗っ取られる可能性は0%にでき...
11/54セキュリティの問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: Wordpressは本当に安全?
残念ながら、完璧なソフトウェアなんて無い。
乗っ取られる可能性は0%にでき...
12/54リソース保護の問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: WordpressがCPU、メモリを食い潰す
Wordpressの不具合でCPUを占有したら?
メモリを使い...
13/54リソース保護の問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: WordpressがCPU、メモリを食い潰す
Wordpressの不具合でCPUを占有したら?
メモリを使い...
14/54ポータビリティ・再現性の問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: 別のサーバにWordpressを移したい
別のサーバにって…もう一回環境作るの?
Case2: 移...
15/54ポータビリティ・再現性の問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: 別のサーバにWordpressを移したい
別のサーバにって…もう一回環境作るの?
Case2: 移...
16/54バックアップ・ロールバックの問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: バージョンアップに失敗した
バージョンアップ中にWordpressから応答が無くなった…
Ca...
17/54バックアップ・ロールバックの問題
依存
競合
バックアップ
ロールバック
セキュリティ リソース保護
ポータビリティ
再現性
Case1: バージョンアップに失敗した
バージョンアップ中にWordpressから応答が無くなった…
Ca...
18/54問題と理想像
依存・競合
セキュリティ
リソース保護
バックアップ
ロールバック
ポータビリティ
再現性
アプリ毎に環境を分離したい
影響範囲を小さくしたい
リソースをアプリ毎に区切りたい
ファイルを移すように簡単に移動したい
簡単に...
19/54理想を実現するには?
こんな時こそ仮想マシン
20/54仮想マシンにすると?
依存・競合
セキュリティ
リソース保護
バックアップ
ロールバック
ポータビリティ
再現性
仮想マシン1台にアプリ1つで完全分離
影響範囲は基本的にマシン内のみ
一定以上のリソースは使えない
ファイル感覚で移動で...
21/54仮想マシンにすると?
完璧!
22/54他の方法が?
ちょっと待って
23/54他の方法が?
もっと良い方法があります
24/54Dockerって何?
Dockerはコンテナ型の仮想化ツール
Docker社(旧dotCloud社)が
PaaS事業で使っていた技術をOSS化したもの
この辺がコンテナっぽい
25/54Dockerって何?
コンテナ型の仮想化とは何なのか
仮想マシンとコンテナ型を比較します
26/54仮想マシンの場合
Physical server
Guest OS
Bins/Libs
App#2
Host OS
Hypervisor
Guest OS
Bins/Libs
App#1
仮想マシンの部分
27/54仮想マシンの場合
Physical server
Guest OS
Bins/Libs
App#2
Host OS
Hypervisor
Guest OS
Bins/Libs
App#1
仮想マシンの部分
・分離用にアプリ分のゲストO...
28/54コンテナの場合
Physical server
Bins/Libs
App#2
Host OS
Docker Engine
Bins/Libs
App#1
コンテナの部分
アプリは隔離空間で動く
カーネルはホストと共有
29/54コンテナの場合
Physical server
Bins/Libs
App#2
Host OS
Docker Engine
Bins/Libs
App#1
コンテナの部分
アプリは隔離空間で動く
カーネルはホストと共有
・ゲストOSが...
30/54コンテナとは
結局コンテナって何?
31/54コンテナとは
アプリ本体、必要なライブラリ等をパッケージングしたもの
ゲストOSは含まない(ホストのカーネルを利用)
結局コンテナって何?
例:Wordpress + PHP5 + Apache = コンテナ
32/54Dockerを使うメリット:まとめ
33/54Dockerを使うメリット:まとめ
1 高いポータビリティ
必要な部分のみポータビリティを確保するので軽量
34/54Dockerを使うメリット:まとめ
1
2
高いポータビリティ
必要な部分のみポータビリティを確保するので軽量
アプリの高密度化が可能
ゲストOS用のリソースが不要=コンテナ数を増やせる
35/54Dockerを使うメリット:まとめ
1
3
2
高いポータビリティ
必要な部分のみポータビリティを確保するので軽量
環境の構築手順をコード化できる
コンテナ構築の手順をコード化してブラックボックスを防ぐ
Infrastructure ...
36/54そんなに良いとこだらけではない
でも、こんな弱点があります。
37/54そんなに良いとこだらけではない
ライブマイグレーションできない1
Windows非対応2
ネットワークまわりがカオス3
従来の仮想化 < Dockerとは言い切れない
用途次第であって上位互換ではない
38/54本日のプログラム
Dockerとは?
ネットワークの課題
課題を解決するツールたち
Dockerの今後
Dockerの基礎
(長め)
Dockerの課題
(短め)
まとめ
(ちょっとだけ)
39/54コンテナの分け方
Physical server
MySQL
Host OS
Docker Engine
Bins/Libs
PHP
ひとつのコンテナに複数のアプリケーションは非推奨
アプリ(役割)毎にコンテナを分けるべき
NG
40/54コンテナの分け方
ひとつのコンテナにひとつのアプリケーションが推奨
アプリ(役割)毎にコンテナが分かれているからOK
Physical server
Bins/Libs
MySQL
Host OS
Docker Engine
Bins...
41/54
Bins/Libs
コンテナ間通信
APコンテナとDBコンテナ間の通信
同じホスト上のコンテナは仮想ブリッジで通信可能
Physical server
MySQL
Host OS
Docker Engine
Bins/Libs
PH...
42/54
Docker Engine
Docker Bridge
ホスト外との通信
コンテナがホスト外と通信する場合、NATする必要がある
Physical server
Bins/Libs
MySQL
Host OS
Bins/Libs
P...
43/54ホスト外との通信
もう一度繰り返します
NATする必要がある
ホストの外と通信する時は
44/54ホスト外との通信
DB用ホスト
Physical server
MySQL#4
Host OS
Docker Engine
MySQL#2
MySQL#3
MySQL#1
AP用ホスト
Physical server
PHP#4Hos...
45/54ホスト外との通信
でも、この問題はツールで解決できます
46/54本日のプログラム
Dockerとは?
ネットワークの課題
課題を解決するツールたち
Dockerの今後
Dockerの基礎
(長め)
Dockerの課題
(短め)
まとめ
(ちょっとだけ)
47/54Weave
ホスト間でトンネルを張るコンテナを使って解決
トンネルの両端で独自にブリッジを作って、コンテナを接続させる
Docker Bridge
weave Container
weave Bridge
Container
Cont...
48/54Weave
要はNATの所をバイパスすれば良くね?
勝手にトンネルとブリッジ作って自由にやるわ って考え方
Docker Bridge
weave Container
weave Bridge
Container
Container
...
49/54SocketPlane
トンネルをOpen vSwitch(VXLAN)で実現する
もはや標準ブリッジを無視するパターン
SocketPlane社は2015年3月にDocker社に買収されました
socketplane
VXLANでO...
50/54Docker v1.7~ Experimental
1.7から、ネイティブでNWが組める機能が実験的に搭載
※Experimental(実験)フラグを立ててビルドする必要あり
libnetwork &
Overlay driver
l...
51/54本日のプログラム
Dockerとは?
ネットワークの課題
課題を解決するツールたち
Dockerの今後
Dockerの基礎
(長め)
Dockerの課題
(短め)
まとめ
(ちょっとだけ)
52/54Dockerの今後
昨年末、CoreOS社がコンテナ仕様の標準化を提唱
今年6/22に標準化団体“Open Container Project”が発足
Dockerは同時に標準規格のサンプル実装runCを発表
53/54runCの嬉しいポイント
1
2
コンテナのライブマイグレーション
LXD/CRIUプロジェクトと連携
・LXD…LXCの作者が作ったコンテナハイパーバイザ
・CRIU…checkpoint/restartツール
Windowsコンテ...
54/54最後に宣伝
ご清聴ありがとうございました
概要だけじゃ物足りない方・興味持っちゃった方
続きはWebで
http://tanksuzuki.com
Upcoming SlideShare
Loading in …5
×

Dockerが抱えるネットワークの課題

4,711 views

Published on

2015年7月22日 社内勉強会でDockerについて説明したスライドです。
詳しくは http://tanksuzuki.com/post/docker-inhouse-training/ へどうぞ。

Published in: Technology

Dockerが抱えるネットワークの課題

  1. 1. Presented by Asuka Suzuki AP Communications 54 PAGES Dockerが抱える ネットワークの課題
  2. 2. 2/54はじめに ●対象 ・Dockerがどんな技術かご存じない方 ●本日のゴール ・Dockerの概要/メリット/デメリットを知る ・ネットワークを例に、Dockerの課題を知る
  3. 3. 3/54参考URL 本スライドの作成にあたり、 下記のページを参考にさせて頂きました。 Docker: Linuxコンテナを使ってアプリケーション の配置を支援する http://www.infoq.com/jp/articles/docker-containers
  4. 4. 4/54本日のプログラム Dockerとは? ネットワークの課題 課題を解決するツールたち Dockerの今後 Dockerの基礎 (長め) まとめ (ちょっとだけ) Dockerの課題 (短め)
  5. 5. 5/54本日のプログラム Dockerとは? ネットワークの課題 課題を解決するツールたち Dockerの今後 Dockerの基礎 (長め) Dockerの課題 (短め) まとめ (ちょっとだけ)
  6. 6. 6/54アプリの配置は複雑 アプリの配置は複雑になるばかり… ある物理サーバにWordpressを導入する場合
  7. 7. 7/54こんな問題に直面します 1 依存関係・競合 2 セキュリティ 3 リソース保護 4 ポータビリティ・再現性 5 バックアップ・ロールバック
  8. 8. 8/54依存・競合の問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: 既に別のサイトがnginxで動いている 既に別のサイトがnginxで動いていた。 WordpressはApacheで動かしたいが… Case2: しかも既存サイトはPHP4依存 WordpressはPHP5必須。PHP4とPHP5を共存させる!?
  9. 9. 9/54依存・競合の問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: 既に別のサイトがnginxで動いている 既に別のサイトがnginxで動いていた。 WordpressはApacheで動かしたいが… Case2: しかも既存サイトはPHP4依存 WordpressはPHP5必須。PHP4とPHP5を共存させる!? アプリ毎に環境を分離したい
  10. 10. 10/54セキュリティの問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: Wordpressは本当に安全? 残念ながら、完璧なソフトウェアなんて無い。 乗っ取られる可能性は0%にできない。
  11. 11. 11/54セキュリティの問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: Wordpressは本当に安全? 残念ながら、完璧なソフトウェアなんて無い。 乗っ取られる可能性は0%にできない。 影響範囲を最小にしたい
  12. 12. 12/54リソース保護の問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: WordpressがCPU、メモリを食い潰す Wordpressの不具合でCPUを占有したら? メモリを使い尽くしたらどうなる?
  13. 13. 13/54リソース保護の問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: WordpressがCPU、メモリを食い潰す Wordpressの不具合でCPUを占有したら? メモリを使い尽くしたらどうなる? リソースをアプリ毎に区切りたい
  14. 14. 14/54ポータビリティ・再現性の問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: 別のサーバにWordpressを移したい 別のサーバにって…もう一回環境作るの? Case2: 移設後、今まで通り動作するか? 移設後の環境でWordpressを立てた!…が動かない。 移設前後で何が変わった!?
  15. 15. 15/54ポータビリティ・再現性の問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: 別のサーバにWordpressを移したい 別のサーバにって…もう一回環境作るの? Case2: 移設後、今まで通り動作するか? 移設後の環境でWordpressを立てた!…が動かない。 移設前後で何が変わった!? ファイルを移すように簡単に移動したい
  16. 16. 16/54バックアップ・ロールバックの問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: バージョンアップに失敗した バージョンアップ中にWordpressから応答が無くなった… Case2: バージョンアップ後、動きがおかしい バージョンアップは上手くいった! でも特定のプラグインが動かなくなってしまった…
  17. 17. 17/54バックアップ・ロールバックの問題 依存 競合 バックアップ ロールバック セキュリティ リソース保護 ポータビリティ 再現性 Case1: バージョンアップに失敗した バージョンアップ中にWordpressから応答が無くなった… Case2: バージョンアップ後、動きがおかしい バージョンアップは上手くいった! でも特定のプラグインが動かなくなってしまった… 簡単に前の状態に戻したい
  18. 18. 18/54問題と理想像 依存・競合 セキュリティ リソース保護 バックアップ ロールバック ポータビリティ 再現性 アプリ毎に環境を分離したい 影響範囲を小さくしたい リソースをアプリ毎に区切りたい ファイルを移すように簡単に移動したい 簡単に前の状態に戻したい
  19. 19. 19/54理想を実現するには? こんな時こそ仮想マシン
  20. 20. 20/54仮想マシンにすると? 依存・競合 セキュリティ リソース保護 バックアップ ロールバック ポータビリティ 再現性 仮想マシン1台にアプリ1つで完全分離 影響範囲は基本的にマシン内のみ 一定以上のリソースは使えない ファイル感覚で移動できる スナップショットで簡単に戻せる
  21. 21. 21/54仮想マシンにすると? 完璧!
  22. 22. 22/54他の方法が? ちょっと待って
  23. 23. 23/54他の方法が? もっと良い方法があります
  24. 24. 24/54Dockerって何? Dockerはコンテナ型の仮想化ツール Docker社(旧dotCloud社)が PaaS事業で使っていた技術をOSS化したもの この辺がコンテナっぽい
  25. 25. 25/54Dockerって何? コンテナ型の仮想化とは何なのか 仮想マシンとコンテナ型を比較します
  26. 26. 26/54仮想マシンの場合 Physical server Guest OS Bins/Libs App#2 Host OS Hypervisor Guest OS Bins/Libs App#1 仮想マシンの部分
  27. 27. 27/54仮想マシンの場合 Physical server Guest OS Bins/Libs App#2 Host OS Hypervisor Guest OS Bins/Libs App#1 仮想マシンの部分 ・分離用にアプリ分のゲストOSが必要 ・起動が遅い(数分) ・イメージが大きい(数十GByte~) ココがBAD!
  28. 28. 28/54コンテナの場合 Physical server Bins/Libs App#2 Host OS Docker Engine Bins/Libs App#1 コンテナの部分 アプリは隔離空間で動く カーネルはホストと共有
  29. 29. 29/54コンテナの場合 Physical server Bins/Libs App#2 Host OS Docker Engine Bins/Libs App#1 コンテナの部分 アプリは隔離空間で動く カーネルはホストと共有 ・ゲストOSがいらない ・サイズが小さい(数百MByte) ・起動が早い(1秒くらい) ココがGOOD!
  30. 30. 30/54コンテナとは 結局コンテナって何?
  31. 31. 31/54コンテナとは アプリ本体、必要なライブラリ等をパッケージングしたもの ゲストOSは含まない(ホストのカーネルを利用) 結局コンテナって何? 例:Wordpress + PHP5 + Apache = コンテナ
  32. 32. 32/54Dockerを使うメリット:まとめ
  33. 33. 33/54Dockerを使うメリット:まとめ 1 高いポータビリティ 必要な部分のみポータビリティを確保するので軽量
  34. 34. 34/54Dockerを使うメリット:まとめ 1 2 高いポータビリティ 必要な部分のみポータビリティを確保するので軽量 アプリの高密度化が可能 ゲストOS用のリソースが不要=コンテナ数を増やせる
  35. 35. 35/54Dockerを使うメリット:まとめ 1 3 2 高いポータビリティ 必要な部分のみポータビリティを確保するので軽量 環境の構築手順をコード化できる コンテナ構築の手順をコード化してブラックボックスを防ぐ Infrastructure as Code アプリの高密度化が可能 ゲストOS用のリソースが不要=コンテナ数を増やせる ※他にも沢山ありますが、時間の問題で割愛します
  36. 36. 36/54そんなに良いとこだらけではない でも、こんな弱点があります。
  37. 37. 37/54そんなに良いとこだらけではない ライブマイグレーションできない1 Windows非対応2 ネットワークまわりがカオス3 従来の仮想化 < Dockerとは言い切れない 用途次第であって上位互換ではない
  38. 38. 38/54本日のプログラム Dockerとは? ネットワークの課題 課題を解決するツールたち Dockerの今後 Dockerの基礎 (長め) Dockerの課題 (短め) まとめ (ちょっとだけ)
  39. 39. 39/54コンテナの分け方 Physical server MySQL Host OS Docker Engine Bins/Libs PHP ひとつのコンテナに複数のアプリケーションは非推奨 アプリ(役割)毎にコンテナを分けるべき NG
  40. 40. 40/54コンテナの分け方 ひとつのコンテナにひとつのアプリケーションが推奨 アプリ(役割)毎にコンテナが分かれているからOK Physical server Bins/Libs MySQL Host OS Docker Engine Bins/Libs PHP GOOD
  41. 41. 41/54 Bins/Libs コンテナ間通信 APコンテナとDBコンテナ間の通信 同じホスト上のコンテナは仮想ブリッジで通信可能 Physical server MySQL Host OS Docker Engine Bins/Libs PHP Docker Bridge 仮想ブリッジの部分 コンテナのNICが接続される
  42. 42. 42/54 Docker Engine Docker Bridge ホスト外との通信 コンテナがホスト外と通信する場合、NATする必要がある Physical server Bins/Libs MySQL Host OS Bins/Libs PHP Client PC ホストのIP:80番宛は PHPコンテナ:80に フォワード
  43. 43. 43/54ホスト外との通信 もう一度繰り返します NATする必要がある ホストの外と通信する時は
  44. 44. 44/54ホスト外との通信 DB用ホスト Physical server MySQL#4 Host OS Docker Engine MySQL#2 MySQL#3 MySQL#1 AP用ホスト Physical server PHP#4Host OS Docker Engine PHP#2 PHP#3 PHP#1 AP用のホストとDB用のホストを分けた場合 NATしすぎで管理のことを考えると吐き気が・・・ Client PC NAT NAT
  45. 45. 45/54ホスト外との通信 でも、この問題はツールで解決できます
  46. 46. 46/54本日のプログラム Dockerとは? ネットワークの課題 課題を解決するツールたち Dockerの今後 Dockerの基礎 (長め) Dockerの課題 (短め) まとめ (ちょっとだけ)
  47. 47. 47/54Weave ホスト間でトンネルを張るコンテナを使って解決 トンネルの両端で独自にブリッジを作って、コンテナを接続させる Docker Bridge weave Container weave Bridge Container Container Container Container Container Docker Bridge weave Container weave Bridge Container Container Container Container Container Overlay(独自規格)
  48. 48. 48/54Weave 要はNATの所をバイパスすれば良くね? 勝手にトンネルとブリッジ作って自由にやるわ って考え方 Docker Bridge weave Container weave Bridge Container Container Container Container Container Docker Bridge weave Container weave Bridge Container Container Container Container Container Overlay(独自規格)NAT NAT
  49. 49. 49/54SocketPlane トンネルをOpen vSwitch(VXLAN)で実現する もはや標準ブリッジを無視するパターン SocketPlane社は2015年3月にDocker社に買収されました socketplane VXLANでOverlay Open vSwitch Container Container Container Container Container Container Open vSwitch socketplane Container Container Container Container KVSで同期 (consul)
  50. 50. 50/54Docker v1.7~ Experimental 1.7から、ネイティブでNWが組める機能が実験的に搭載 ※Experimental(実験)フラグを立ててビルドする必要あり libnetwork & Overlay driver libkv & KVS ※KVSはConsul、etcd、zookeeperに対応(Consulしか試してません) Container Container Container Container Container libnetwork & Overlay driver libkv & KVS Container Container Container Container Container KVSで同期 多分VXLAN (ソース読んだ感じ)
  51. 51. 51/54本日のプログラム Dockerとは? ネットワークの課題 課題を解決するツールたち Dockerの今後 Dockerの基礎 (長め) Dockerの課題 (短め) まとめ (ちょっとだけ)
  52. 52. 52/54Dockerの今後 昨年末、CoreOS社がコンテナ仕様の標準化を提唱 今年6/22に標準化団体“Open Container Project”が発足 Dockerは同時に標準規格のサンプル実装runCを発表
  53. 53. 53/54runCの嬉しいポイント 1 2 コンテナのライブマイグレーション LXD/CRIUプロジェクトと連携 ・LXD…LXCの作者が作ったコンテナハイパーバイザ ・CRIU…checkpoint/restartツール Windowsコンテナに対応 Windows10コンテナをサポート予定 勢いが止まらないDocker、今後の開発が楽しみです (試したところ、上記機能は未実装でしたが…今後に期待)
  54. 54. 54/54最後に宣伝 ご清聴ありがとうございました 概要だけじゃ物足りない方・興味持っちゃった方 続きはWebで http://tanksuzuki.com

×