Successfully reported this slideshow.
Your SlideShare is downloading. ×

Docker 1.12 の衝撃

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 26 Ad
Advertisement

More Related Content

Slideshows for you (20)

Similar to Docker 1.12 の衝撃 (20)

Advertisement

Recently uploaded (20)

Docker 1.12 の衝撃

  1. 1. Docker 1.12 の衝撃 M3 Tech Talk 2016/6/28 (@yteraoka)
  2. 2. Docker 1.11 の Swarm クラスタ を Production 環境に投入すべく、 ほぼほぼ構成が出来上がったとこ ろでそれはやって来ました
  3. 3. 導入予定の構成
  4. 4. ● 各サーバーがTLS通信(サーバー、クライアントの証明書も確認) するための証明書発行機能 ● Swarm Cluster を構成するための Swarm Manager(3台 or 5台) + Key / Value ストア(Consul) ● コンテナを実行する Docker サーバーとその各サーバー上の Swarm Agent ● Docker の Overlay network を構成するための Key-Value ストア (Consul) (別々のDockerサーバー上のコンテナが同一ネットワークとして稼働) ● 外部からコンテナにアクセスするための Reverse Proxy / Load Balancer としての nginx または HAProxy ● nginx / HAProxy の設定をコンテナの起動停止に合わせて更新するための Consul-Template(Consul も必要) ● Consul-Template のために Docker Engine のイベントを監視してサービ スを登録、削除する Registrator ● 様々な用途で使われる Consul は単一のクラスタ
  5. 5. これがなんと!
  6. 6. たったのこれだけ
  7. 7. ● 分散Key-Valueストア ● それを必要としていたOverlay Network ● TLS証明書発行機能 ● 外部からのアクセス用Proxy 全部取り込まれました!!
  8. 8. # 1台目 $ docker swarm init --listen-addr 192.168.99.121:2377 # 2台目 $ docker swarm join --manager ¥ --listen-addr 192.168.99.122:2377 192.168.99.121:2377 # 3台目 $ docker swarm join --manager ¥ --listen-addr 192.168.99.123:2377 192.168.99.121:2377 # 知らない node が join してくると困るので leader node で # accept する $ docker node accept <node name>
  9. 9. マネージャは3台あれば冗長構成となるので、Docker の実行ノードがもっと 欲しい場合は $ docker swarm join ¥ --listen-addr 192.168.99.124:2377 192.168.99.121:2377 $ docker swarm join ¥ --listen-addr 192.168.99.125:2377 192.168.99.121:2377 と、どんどん追加ですればOK 減らすのも簡単、稼働中のコンテナは別 node に移してくれる
  10. 10. コマンドもたったのこれだけ あの構成にどれだけの...
  11. 11.
  12. 12. これだけではない!
  13. 13. さらに、これまでの Swarm には無かった Service という概念、機能が加わりました これは Kubernetes などに存在し、これまで の Swarm には無い辛いところでした
  14. 14. $ docker service create ¥ --replicas 3 -p 3000 ¥ --name myapp myapp:1.0
  15. 15. $ docker service create ¥ --replicas 3 -p 3000 ¥ --name myapp myapp:1.0 これで myapp コンテナを3つ起動してくれます、不意に落ちて も3つをキープするように起動してくれます。実行していた Docker node が H/W 障害などで停止しても別の node で実行 してくれます https://docs.docker.com/engine/swarm/swarm-tutorial/deploy-service/
  16. 16. $ docker service scale myapp=5
  17. 17. $ docker service scale myapp=5 これでさらに2つのコンテナを追加して5つのコンテナの実行を 維持してくれます ピークを過ぎたら減らせばOK https://docs.docker.com/engine/swarm/swarm-tutorial/scale-service/
  18. 18. Rolling update
  19. 19. $ docker service update ¥ --image myapp:1.1 myapp
  20. 20. $ docker service update ¥ --image myapp:1.1 myapp これで myapp の実行イメージを順番に切り替えてくれます 同時にいくつ切り替えるのか、間隔をどれだけ開けるのかは create / update で指定する --update-parallelism, --update- delay で調整可能 https://docs.docker.com/engine/swarm/swarm-tutorial/rolling-update/
  21. 21. Load Balancing
  22. 22. 3000/tcp myapp 3000/tcp myapp 3000/tcp myapp 32767/tcp 32767/tcp 32767/tcp Docker外 サービスのポートはどの node でも同 じ番号に map され、各 node に振り 分けられる(ラウンドロビン) この図ではおまかせ設定のポート番号 だが、任意の番号を指定可能 こういうわけなので Consul- Template と組み合わせた nginx / HAProxy というものは必須ではなく なります Consul いなくなっちゃったし
  23. 23. bundle / stack https://github.com/docker/docker/blob/master/experimental/docker-stacks-and-bundles.md
  24. 24. bundle は複数のコンテナをまとめた定義 ファイル(アプリとRedisのセットなど) (Kubernetes の Pod とは違いそう) stack は bundle から起動されたコンテナ の集合
  25. 25. Docker 1.12 正式リリースが待ち遠しい

×