docker 1.12 & swarm mode introduction ~ docker の新しい技術と swarm モードの紹介
TRANSCRIPT
![Page 1: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/1.jpg)
D o c k e r の 新 し い 技 術 と s w a r m m o d e の 紹 介
@zembutsu
Docker 1.12 & Swarm ModeIntroduction
![Page 2: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/2.jpg)
Docker のおさらい
Docker 1.12 の技術概要
新しいswarmモードの紹介と基本コマンド(デモ)
![Page 3: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/3.jpg)
Docker?
![Page 4: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/4.jpg)
開発環境でDockerを使用
アプリ環境の管理のためDockerを使用
開発の機敏性を高めるためDockerを使用
アプリのポータビリティを達成するためにDockerを使用
プロダクション用のアプリでDocker使用
伝統的データベース
分散データベース
ビッグデータ
アプリ・サーバ
ウェブ・アプリ
ウェブ API
Dockerの役割
開発環境周辺でDockerの利用を計画
DevOps周辺でDockerの利用を計画
“Docker provides the software supply chain with agility, control and portability for app development.”
Dockerは開発のための機敏なソフトウェアのサプライチェーン、管理、ポータビリティを提供 [1]
The Evolution of the Modern Software Supply Chain - The Docker Survey, 2016https://www.docker.com/survey-2016
![Page 5: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/5.jpg)
Dockerイメージ
コンテナ実行時に必要なファイルシステムtar アーカイブの中に Linux 用のファイル群が存在
イメージ・レイヤ(層)は読み込み専用
イメージはレイヤを共有レイヤは親子関係を持つ
ディスク容量消費を回避し、移動しやすく
コンテナ起動時にイメージを使用読み書き可能なレイヤを追加する
イメージ内のファイルを(isolate状態で)実行する
![Page 6: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/6.jpg)
$ docker pull ubuntuUsing default tag: latestlatest: Pulling from library/ubuntu203137e8afd5: Pull complet2ff1bbbe9310: Pull complete933ae2486129: Pull completea3ed95caeb02: Pull completeDigest: sha256:1bea66e185d3464fec1abda32ffaf2a11de69833cfcf81bd2b9a5be147776814Status: Downloaded newer image for ubuntu:latest/
![Page 7: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/7.jpg)
![Page 8: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/8.jpg)
Dockerコンテナの操作
OS ( Linux )
物理/仮想サーバ
Docker エンジン( dockerd デーモン )
Linux kernel
コンテナ コンテナ コンテナ
リモートAPI
dockerクライアント TCP あるいは
Unix ソケットドメイン
containerdRuntime: runC (OCI規格準拠)
・docker コマンドLinux, Mac OS X, Windows
・Kitematic (GUI)Mac OS X, Windows
・Docker Compose
・Docker Swarm
![Page 9: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/9.jpg)
コンテナのプロセス
httpdPID 1
コンテナA コンテナB
rubyPID 1
chris.rbPID 2
/sbin/initPID 1
httpdPID 6
rubyPID 7
chris.rbPID 8
alicePID 2
bobPID 3
PPID 1 PPID 1
PPID 4
PPID 5 PPID 5
PPID 7
PPID 1
containerdPID 5
dockerdPID 4
![Page 10: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/10.jpg)
コンテナのファイルシステム
コンテナAのファイルシステム
… …
コンテナBのファイルシステム
/etc(/data/ubuntu/etc)
/bin(/data/ubuntu/bin)
/etc(/data/centos/etc)
/bin(/data/centos/bin)
/ /
/
/etc
/data/ubuntu /data/centos
/bin /data
![Page 11: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/11.jpg)
コンテナの実行
コンテナAのファイルシステム
… …
コンテナBのファイルシステム
/etc(/data/ubuntu/etc)
/bin(/data/ubuntu/bin)
/etc(/data/centos/etc)
/bin(/data/centos/bin)
/ /
httpdPID 1
プロセスA プロセスB
rubyPID 1
chris.rbPID 2
コンテナA コンテナB
名前空間の isolate・プロセス・ファイルシステム・ネットワーク・ホスト名・UID・GID
リソース制限・CPU・メモリ・I/O・ディスク・クォータ
![Page 12: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/12.jpg)
Docker Engine
Linux Kernel・namespaces・cgroups・capabilities … etc
LXC
libcontainer
runC
containerdv0.9~v1.11~
Version 7 Unixchrootjail
dockerd
v1.12~
デーモン
ライブラリランタイム
![Page 13: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/13.jpg)
Dockerコンテナの操作
OS ( Linux )
物理/仮想サーバ
Docker エンジン( dockerd デーモン )
Linux kernel
コンテナ コンテナ コンテナ
リモートAPI
dockerクライアント TCP あるいは
Unix ソケットドメイン
containerdRuntime: runC (OCI規格準拠)
・docker コマンドLinux, Mac OS X, Windows
・Kitematic (GUI)Mac OS X, Windows
・Docker Compose
・Docker Swarm
![Page 14: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/14.jpg)
Docker 1.12
![Page 15: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/15.jpg)
現時点はリリース候補(RC)版
開発バージョンのバイナリ入手https://github.com/docker/docker/releases
# curl -fsSL https://test.docker.com/ | sh
注意点仕様変更
バグ
![Page 16: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/16.jpg)
Docker 1.12 概要 [2]
Swarm 機能統合:Built-in OrchestrationDocker Engine に Docker Swarm のクラスタ管理機能を統合オプションとしての Swarm Mode なので、必須ではない標準のセキュリティ機能
新しいサービスとイメージ管理分散アプリケーション・バンドル(.dab) は JOSN 形式のフォーマットでサービス定義docker deploy、docker stack コマンド (EXPERIMENTAL)Docker Store 発表 (private bate)
新機能Dockerfileでヘルスチェックの定義docker plugin コマンドのサポートディスク・クォータ
![Page 17: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/17.jpg)
$ docker run …
$ docker run …
$ docker run …
• 増減する環境
• 日々の運用
• 障害対応
![Page 18: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/18.jpg)
内部分散ステート・ストアInternal Distrubuted State Store
マネージャManager
マネージャManager
マネージャManager
ワーカWorker
ワーカWorker
ワーカWorker
ワーカWorker
ワーカWorker
ワーカWorker
![Page 19: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/19.jpg)
Built-in Orchestration
シンプルでありながら強力設計思想は、難しいことなく、とにかく動く(it just work)
クラスタ管理のために、複雑なセットアップが不要
docker service や docker node コマンドを標準サポート
柔軟性 (Resilient)アプリケーションの実行単位がサービス (service)であり、期待状態を定義
安全 (Secure)PKI 基盤が組み込まれており、クラスタ間通信は常に TLS 認証が有効
オプション機能と後方互換性swarmモードを有効化しても CPU やメモリのリソースを消費しない
![Page 20: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/20.jpg)
Swarm マネージャ
Docker 1.12 RC の Docker Engine と Swarm
v1.11まで
swarm manage
Swarm ノード1 Swarm ノード2
swarm join swarm joinDocker Engine(docker daemon)
ディスカバリ・バックエンドConsulEtcdzookeeper
monitoring
Remote management
v1.12 RC1~
マネージャ・ノード1 ワーカ・ノード1 ワーカ・ノード2
Docker Engine(dockerd)
Manager node Worker node Worker node
• Docker Swarmのクラスタを管理するには、
Docker Engineとは別に Swam マネージャと
Swarm ノード、さらにディスカバリ・バックエンド
が必要
• Docker Engine に Swarm 機能を統合
• dockerd は Docker Engine のデーモンの役割と、
Swarm のノード(マネージャまたはワーカ)も担う
• 従来必要だった Swarm コンテナやバイナリだけ
でなく、外部のツールを必要としない
• --replicas オプションは docker-compose scale 風
docker swarm join docker swarm join
サービスタスク(コンテナの挙動)と期待状態(desired state)を
定義
タスク(task)
タスク(task)
allocateOverlay network
docker swam init(クラスタ初期化)
docker swam service create
内部DNSはサービス名でLoad balancing
サービスの公開ポートはIngress Load Balancingとして公開(どのノードのポートにアクセスしても、対象のサービス用ポートに到達。つまり、
コンテナが起動しなくても、ノード内のどこかの IP アドレスさえ分かればよい)Docker Engine クラスタを“Swarm”(群れ)と呼ぶ
![Page 21: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/21.jpg)
key.pem
key.pem
key.pem
Docker CLI
....
......
Docker クライアント"client"
....
......
Swarm クラスタ
認証局(CA)サーバ"ca"
"node1"
....
......
Swarmマネージャ"swarm"
ca.cert
key.pem
cert.pem
"node2"
....
...... ca.cert
cert.pem
....
...... ca.cert
cert.pem
....
...... ca.cert
cert.pem
swarm-priv-key.pem
swarm-cert.pem
client-priv-key.pem
client-cert.pem
node1-priv-key.pem
node1-cert.pem
node2-priv-key.pem
node2-cert.pem
ca.pem
Before 1.11
![Page 22: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/22.jpg)
key.pem
key.pem
key.pem
Docker CLI
....
......
Docker クライアント"client"
....
......
Swarm モード
認証局(CA)サーバ"ca"
"node1"
....
......
Swarmマネージャ"swarm"
ca.cert
key.pem
cert.pem
"node2"
....
...... ca.cert
cert.pem
....
...... ca.cert
cert.pem
....
...... ca.cert
cert.pem
swarm-priv-key.pem
swarm-cert.pem
client-priv-key.pem
client-cert.pem
node1-priv-key.pem
node1-cert.pem
node2-priv-key.pem
node2-cert.pem
ca.pem
After 1.12
![Page 23: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/23.jpg)
Swarm mode
![Page 24: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/24.jpg)
swarmモード
Docker標準搭載のクラスタとサービス管理機構Docker Engine v1.12RC1 から Docker Swarm と機能統合 (SwarmKit) [3]
クラスタを “Swarm” とよび、マネージャがノード上のサービスを簡単に一括管理
管理はサービスとタスクの単位アプリケーションの実行単位がサービス (service)であり、期待状態を定義
複製サービスとグローバル・サービスの2種類
タスクがコンテナのスケジューリング単位
マルチホスト対応のルーティング・メッシュ期待状態を維持するために、タスクの自動増減の対応やヘルスチェック機能
外部サービスはIngressロード・バランシングで負荷分散し、内部も DNS を持つ [4]
![Page 25: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/25.jpg)
![Page 26: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/26.jpg)
nginx
サービス
nginx.1
nginx.2
nginx.3
タスク コンテナ
nginx:latest
nginx:latest
nginx:latest
![Page 27: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/27.jpg)
スタックstack
.dabDistributed Application Bundle
(JSON) docker deploydocker stack
What’s new in Docker 1.12 より [5]
![Page 28: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/28.jpg)
internet
仮想マシン 仮想マシン 仮想マシン
network
Port 80 Port 80 Port 80
![Page 29: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/29.jpg)
internet
仮想マシン 仮想マシン 仮想マシン
network
Port 80 Port 80 Port 80ingressOverlay network
・ルーティング・負荷分散
タスク タスク タスク
Swarmモードはクラスタの初期化$ docker swarm init$ docker swarm join <host>:2377
![Page 30: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/30.jpg)
internet
仮想マシン 仮想マシン 仮想マシン
ingressVirtual Router
(IPVS)
タスク タスク タスクRouting mesh
network
サービス作成$ docker service create
「--constraint」でノードの指定「--mode=global」で全ノードに展開
![Page 31: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/31.jpg)
manager-01 worker-01 worker-02
network
ingressOverlaynetwork
nginx nginx nginx
worker-03
nginxPort 8080 Port 8080 Port 8080 Port 8080
サービス期待値 (desired state)は実際の状態とは異なる$ docker service crate --replicas 4 –p 80:8080 --name=web nginx$ docker service update --replicas 4 web
![Page 32: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/32.jpg)
internet
manager-01 worker-01 worker-02
ingressOverlaynetwork
nginx nginx nginx
worker-03
nginxPort 8080 Port 8080 Port 8080 Port 8080
network
サービス期待値 (desired state)は実際の状態とは異なる$ docker service crate --replicas 4 –p 80:8080 --name=web nginx$ docker service update --replicas 4 web
![Page 33: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/33.jpg)
Swarm モード を つかう には
![Page 34: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/34.jpg)
swarm mode 基本コマンド
$ docker swarm init --listen-addr <host>:2377
$ docker swarm join <host>:<port>
$ docker service create ¥
--replicas N –p <公開port>:<内部> --name <名前> <イメージ>
$ docker service ls
$ docker service tasks <サービス名>
$ docker service update --replicas N <サービス名>
$ docker service update --image <イメージ> <サービス名>
$ docker service rm
クラスタ初期化
クラスタ参加
サービス作成
サービス一覧
タスク一覧
サービス更新
ローリング・アップデート
サービス削除
![Page 35: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/35.jpg)
① Docker Engine “swarm モード” の初期化
マネージャ・ノード1 ワーカ・ノード1 ワーカ・ノード2
Docker Engine(dockerd)
Manager node Worker node Worker node
Docker Engine のクラスタを「swarm」(”群れ”の意味)と呼ぶ「docker swarm」コマンドはクラスタ上のサービスやタスクを管理するはじめに「docker swarm init」コマンドでクラスタを初期する
192.168.39.1(node-01)
192.168.39.2(node-02)
192.168.39.3(node-03)
docker swarm init –listen-addr 192.168.39.1:2377
クラスタの初期化
docker@node-01:~$ docker node lsID NAME MEMBERSHIP STATUS AVAILABILITY MANAGER STATUSdhrbvl6o9xqvprsq2uzq8o9ev * node-01 Accepted Ready Active Leader
各ホスト上では Docker Engine (dockerd)が稼働している。通常の docker コマンド利用とswarm モードは併用可能
Docker Engine(dockerd)
Docker Engine(dockerd)
ノードは swarm クラスタ内の Docker エンジンのこと「docker node」はクラスタのノード管理するコマンド群で、マネージャ・ノードのみ実行可能「docker node ls」は、マネージャ用のノード一覧を表示
swarm クラスタ
![Page 36: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/36.jpg)
② swarm node join でクラスタに追加
マネージャ・ノード1 ワーカ・ノード1 ワーカ・ノード2Manager node Worker node Worker node
swarm クラスタ
192.168.39.1(node-01)
192.168.39.2(node-02)
192.168.39.3(node-03)
docker swarm join 192.168.39.1:2377
クラスタに worker (ワーカ)として参加
docker@node-01:~$ docker node lsID NAME MEMBERSHIP STATUS AVAILABILITY MANAGER STATUS6puvbl7tgxislfha5iaha40jm node-03 Accepted Ready Active9zj16or3durdh5i7c6khlench node-02 Accepted Ready Activedhrbvl6o9xqvprsq2uzq8o9ev * node-01 Accepted Ready Active Leader
「MANAGER STATUS」が無ければ、ワーカ・ノードとして動作ただし、この例のマネージャはワーカも兼ねている
TCP Port 2377 は、クラスタ管理の通信用TCP/UDP Port 7946 はノード間通信用TCP/UDP Port 4789 はオーバレイ・ネットワーク用
ワーカはマネージャからタスクを受け取る
マネージャでサービスを定義タスクをワーカに割り振る
![Page 37: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/37.jpg)
③ swarm service create でサービス作成
マネージャ・ノード1 ワーカ・ノード1 ワーカ・ノード2Manager node Worker node Worker node
swarm クラスタ
192.168.39.1(node-01)
192.168.39.2(node-02)
192.168.39.3(node-03)
$ docker service create --replicas 1 –name web -p 80:80 nginxf218o6xshkyt7zzxujhnz1a2h
nginx イメージを使う web という名前のサービスを作成
docker@node-01:~$ docker service lsID NAME REPLICAS IMAGE COMMAND13765buws9fr web 0/1 nginx
サービスはレプリカの期待数を定義「0/1」は期待数は 1 だが現状は 0
レプリカ数:1swarmのポート80をコンテナ内の80に割り当て
マネージャでサービスを定義タスクをワーカに割り振る
ID NAME REPLICAS IMAGE COMMAND13765buws9fr web 1/1 nginx
マネージャはノードにタスクを割り当て(スケジュールし)、タスク(としてのコンテナ)が起動すると「1/1」になる
サービス タスク(コンテナ)
nginxweb
スケジュール
コンテナ起動
![Page 38: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/38.jpg)
④ ポートの公開と Ingress オーバレイ・ネットワーク
マネージャ・ノード1 ワーカ・ノード1 ワーカ・ノード2Manager node Worker node Worker node
swarm クラスタ
192.168.39.1(node-01)
192.168.39.2(node-02)
192.168.39.3(node-03)
サービス タスク(コンテナ)
nginxweb
Port 80(tcp)
オーバレイ・ネットワーク
Port 80(tcp)
Ingress
Port 80(tcp)Port 80(tcp)
$ docker network lsNETWORK ID NAME DRIVER SCOPEbbb5e37b01e8 bridge bridge local6550c72b075f docker_gwbridge bridge local84baeb90cbb2 host host local9i5hmgqr20jh ingress overlay swarm7ab4c321bbe5 none null local
![Page 39: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/39.jpg)
⑤ Ingress Load Balancing
マネージャ・ノード1 ワーカ・ノード1 ワーカ・ノード2Manager node Worker node Worker node
swarm クラスタ
192.168.39.1(node-01)
192.168.39.2(node-02)
192.168.39.3(node-03)
タスク(コンテナ)
nginx
Port 80(tcp)
オーバレイ・ネットワーク
Port 80(tcp)
Ingress
タスク(コンテナ)
nginx
Port 80(tcp)
タスク(コンテナ)
nginx
Port 80(tcp)
![Page 40: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/40.jpg)
ライブ デモ
![Page 41: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/41.jpg)
Docker image: zembutsu/docker-sample-nginx
FROM nginx:latestCOPY default.conf /etc/nginx/conf.d/COPY index.html /usr/share/nginx/html/
<html><body>
<h1>Host: <!--#echo var="HOSTNAME" --></h1></body></html>
server {listen 80;server_name localhost;location / {
root /usr/share/nginx/html;index index.html index.htm;
}error_page 500 502 503 504 /50x.html;location = /50x.html {
root /usr/share/nginx/html;}ssi on;
}
Dockerfile
index.html default.conf
Docker 1.12.0-rc2CentOS Linux release 7.2.1511 (Core)Linux manager-01 3.10.0-327.18.2.el7.x86_64 #1 SMP Thu May 12 11:03:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
![Page 42: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/42.jpg)
まとめ
![Page 43: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/43.jpg)
Docker 1.12 概要 [2]
Swarm 機能統合:Built-in OrchestrationDocker Engine に Docker Swarm のクラスタ管理機能を統合オプションとしての Swarm Mode なので、必須ではない標準のセキュリティ機能
新しいサービスとイメージ管理分散アプリケーション・バンドル(.dab) は JOSN 形式のフォーマットでサービス定義docker deploy、docker stack コマンド (EXPERIMENTAL)Docker Store 発表 (private bate)
新機能Dockerfileでヘルスチェックの定義docker plugin コマンドのサポートディスク・クォータ
どっかで使おうかな?
![Page 44: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/44.jpg)
最新の Docker に対応した日本語ドキュメント
http://docs.docker.jp
私からのお願い
まず読んで頂ければ…
![Page 45: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/45.jpg)
なにか きになる ところ ありますか?
![Page 46: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/46.jpg)
ありがとうございました
![Page 47: Docker 1.12 & Swarm Mode Introduction ~ Docker の新しい技術と swarm モードの紹介](https://reader034.vdocuments.mx/reader034/viewer/2022051101/587155841a28ab8e5b8b5101/html5/thumbnails/47.jpg)
参考[1] The Evolution of the Modern Software Supply Chain - The Docker Survey, 2016
https://www.docker.com/survey-2016/
[2] Docker 1.12: Now with Built-in Orchestration! | Docker Blog
https://blog.docker.com/2016/06/docker-1-12-built-in-orchestration/
[3] Swarm mode key concepts
https://docs.docker.com/engine/swarm/key-concepts/
[4] Docker for Ops: Docker Networking Deep Dive, Considerations and Troubleshooting http://www.slideshare.net/Docker/docker-for-ops-docker-networking-deep-dive-considerations-and-troubleshooting-by-madhu-venugopal-and-jana-radhakrishnan
[5] What's New in Docker 1.12 by Mike Goelzer and Andrea Luzzardi
http://www.slideshare.net/Docker/whats-new-in-docker-112-by-mike-goelzer-and-andrea-luzzardi
補足資料:
Swarm mode overview
https://docs.docker.com/engine/swarm/
Docker 1.12: swarm モードと Ingress Load Balancing 概要 · Pocketstudio Technology Log
https://pocketstudio.net/2016/06/23/docker-1-12-swarm-mode-and-ingress-load-balancing/