Docker技術情報アップデート
2015年7月号
2015年7月13日(月)
【報告会】DockerCon 2015 レビュー
@zembutsu
Technology Evangelist; Creationline, Inc.
WHAT’S NEW ABOUT DOCKER
背景画像CREDIT:スフィア / PIXTA(ピクスタ)
2
このスライドで得られる知識
Docker技術情報アップデート 2015年7月号
‣ 現状整理とDockerのツール群
Dockerを取り巻く状況が、DockerCon 2015 で更に加速。
‣ Docker 1.7 で何が変わったのか?
サードパーティ製プラグイン、ネットワーク、ボリューム管理、そしてオーケストレーション。
‣ Dockerのオーケストレーション
Docker Machine、Docker Swarm、Docker Compoes がバージョン v0.3.0 に。そして、それぞれの連携へ。
http://www.slideshare.net/zembutsu/introduction-to-docker-management-and-operations-basic
Dockerを具体的に使う方法や
セットアップ方法は、基礎編
資料をご参考にいただければ
と思います。
4
自己紹介
‣ 前佛雅人
- Technology Evangelist; Creationline, Inc. – 1.5 yrs
- Data Center Operations Engineer – 15+ yrs
興味関心:運用監視自動化、趣味でOSSやクラウド系の検証・情報発信
- SlideShare http://slideshare.net/zembutsu
- Blog http://pocketstudio.jp/log3
書籍・記事
- Serf/Consulで管理を自動化! (Gihyo.jp)
http://gihyo.jp/admin/feature/01/serf-consul
- HashiCorpのツール群からみる
インフラ構築運用の未来 (Think IT)
http://thinkit.co.jp/book/2015/03/05/5700
Why am I here?
+MasahitoZembutsu
ISBN-10: 4774174416 ISBN-10: 4844338145 ISBN-10: 4798139785
私は開発者の立場というより、
運用の視点でDockerに期待。
現状整理
● ○ ○ ○
Amazon Web Services
Google Cloud Platform
Windows Azure
SoftLayer
Niftyクラウド
さくらのクラウド
Salesforce
Heroku
DigitalOcean
LinodeさくらのVPS
VMware
Circle CI
Jenkins
GitHub
Slack
NewRelic
Datadog
IaaS
パブリック・クラウド PagerDuty
Atlas
Cloud n
クラウドを取り巻く業界俯瞰図
Mackerel
OpenStack
CloudStack
業界の状況を振り返ります。
OpenStack
CloudStack
Mackerel
Amazon Web Services
Google Cloud Platform
Windows Azure
SoftLayer
Niftyクラウド
さくらのクラウド
Salesforce
Heroku
DigitalOcean
LinodeさくらのVPS
VMware
Circle CI
Jenkins
GitHub
Slack
NewRelic
Datadog
IaaS
パブリック・クラウド
日本国内
パブリック
クラウド
VPS
Monitoring
PagerDuty
Operations
CI
PaaS
Atlas
プライベート
クラウド
開発環境 SaaS
Cloud n
Docker
( Linux Containers)
クラウドを取り巻く業界俯瞰図
2年前Dockerやコンテナ界隈が
盛り上がったと思っていたら
OpenStack
CloudStack
Mackerel
Amazon Web Services
Google Cloud Platform
Windows Azure
SoftLayer
Niftyクラウド
さくらのクラウド
Salesforce
Heroku
DigitalOcean
LinodeさくらのVPS
VMware
Circle CI
Jenkins
GitHub
Slack
NewRelic
Datadog
IaaS
パブリック・クラウド
日本国内
パブリック
クラウド
VPS
Monitoring
PagerDuty
Operations
CI
PaaS
Atlas
プライベート
クラウド
開発環境 SaaS
Cloud n
Docker
( Linux Containers)
クラウドを取り巻く業界俯瞰図
一気に様々な業界を巻き込む
ようになっています。何故?
物理時代
仮想化・クラウド時代
コンテナ時代
機
材
発
注
機
材
納
品
設
置
機
器
設
定
事
前
設
計
ク
リ
ッ
ク
見
積
も
り
O
S
設
定
環
境
構
築
試
験
利
用
開
始
試
験
開
発
試
験
運
用
利
用
開
始
…
…
事
前
設
計
ク
リ
ッ
ク
試
験
利
用
開
始
…
事
前
設
計
ク
リ
ッ
ク
試
験
利
用
開
始
…
開 発 段 階 検 証 段 階 本 番 段 階
すべてを迅速に、一貫した環境で行いやすい← New
課題を解決するための手段で
大ざっぱに区分できるのかも
しれません。
物理マシン 物理マシン 物理マシン
OS OS OS
HyperVisor HyperVisor HyperVisor
VM VM VM VM VM VM
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
物理マシン 仮想マシン クラウド
OS OS OS
Docker
Engine
Docker
Engine
Docker
Engine
App App App App App App
App App App App
仮想化・クラウド Dockerのコンテナ管理
なぜコンテナ管理用のプラットフォームが必要なの??
とはいえ、まだ発展途上です。
物理マシン 物理マシン 物理マシン
OS OS OS
HyperVisor HyperVisor HyperVisor
VM VM VM VM VM VM
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
物理マシン 仮想マシン クラウド
OS OS OS
Docker
Engine
Docker
Engine
Docker
Engine
GUI
CLI
API
Docker Cluster 管理レイヤ
( Docker Swarm, rkt, Rancher …etc )
App App App App App App App App App App
コンテナ単体は環境が揃って
きましたが、束ねるのが問題。
物理マシン 物理マシン 物理マシン
OS OS OS
HyperVisor HyperVisor HyperVisor
VM VM VM VM VM VM
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
Guest
OS
App App App App
物理マシン 仮想マシン クラウド
OS OS OS
Docker
Engine
Docker
Engine
Docker
Engine
App App App App App App
GUI
CLI
API
Docker Cluster 管理レイヤ
( Docker Swarm, rkt, Rancher …etc )
オーケストレーション
サービス検出・クラスタ管理
実サービスの基盤にむけて、
様々な取り組みが進みます。
APCERA
Cloud Foundry
shippable
Google Container
Engine
Amazon EC2
Container Service
IBM Containers
on Bluemix
コンテナを取り巻く業界俯瞰図
開発環境
Build / Deploy
運用自動化
Orchestration
kitematic
Etcd
SkyDNS
Service Discovery
Docker
fleet
flannel
rkt
CoreOS
Tectonic
Mesosphere
Apache Auora
Marathon
Cluster Management
Kubernetes
構成管理
Docker Swarm
Docker Machine
Docker Compose
Docker特化OS
PaaS
Networking
コンテナ管理用プラットフォーム
たとえばDocker周辺だけでも
多くの技術や会社があります。
パブリック・クラウド陣営
Google Container
Engine
Amazon EC2
Container Service
IBM Containers
on Bluemix Google Kubernetes
Tectonic
CoreOS
商用サポート/エンタープライズ
管理・効率化
Docker ネイティブサポート
最小環境
Docker
競合
オープンソース
コミュニティ
プラットフォームまわりでも
混沌とした状態でした。
15
DockerCon 2015
‣ Docker, Inc.主催
サンフランシスコ
6月22日・23日の2日間
セッション、ハンズオン、
トレーニング、ブース出展
しかし、DockerConでの発表が
状況を一変させます。
Google Kubernetes
CoreOS× libcontainer 廃止
The Open Container Project (OCP)
runC
Orchestration
PROJECT ORCA
appcは独自に継続
Linux
Foundation
事務局として協力
Google Container
Engine
IBM Containers
on Bluemix
Amazon ECS
割と綺麗に区分できるように
CoreOS
例えば、そもそもコンテナを
何処で動かすかという選択肢、
今日は以下の3つがあります。
RancherOSは日本ではマイナー
ですがOSイメージが22MBとい
う小さなモノ。CoreOSの180MB
よりも小さいサイズ。
なお、RancheOSとRancherは
別のものです。Docker管理を
行うGUIやAPI・クラスタ管理
をするのがRancher。
OS
サーバ
Docker
OS
サーバ
Docker
Rancher
agent
( rancher/agent )
Rancher
agent
( rancher/agent )
管
理
用
コ
ン
テ
ナ
コ
ン
テ
ナ
管
理
用
コ
ン
テ
ナ
コ
ン
テ
ナ
…
コンテナ・インフラ層(オーバレイ・ネットワーク)
10.42.0.0/16
OS
サーバ
Docker
Rancher
agent
( rancher/agent )
管
理
用
コ
ン
テ
ナ
コ
ン
テ
ナ
…
サービス層
Web Database LBWordPress
OS
サーバ
Docker
Rancher
Management Server
( rancher/server )
OS
サーバ
Docker
OS
サーバ
Docker
Rancher
agent
( rancher/agent )
Rancher
agent
( rancher/agent )
管
理
用
コ
ン
テ
ナ
コ
ン
テ
ナ
管
理
用
コ
ン
テ
ナ
コ
ン
テ
ナ
…
…
Amazon EC2,
Google Compute
Engine, Azure,
DigitalOcean,
SoftLayer,
Rackspace,
Openstack..etc
GUI オーバレイ・ネットワーク
10.42.0.0/16
Cloud Providers
API
API
docker-compose.yaml
rancher-compose.yml
Rancher Compose
TCP:22
TCP: 9345, 9346
UDP: 500-4500(IPsec)
Dockerとツール群 (https://www.docker.com/products)
Docker Engine
Dockerコンテナの起動と実行
Docker Swarm
クラスタリングとスケジューリング
Docker Compose
複数のアプリケーションコンテナを定義
Docker Machine
共通したコンテナ実行環境
Kitematic
デスクトップ向け GUi
Docker Registry
コンテナの保管庫
Docker Hub Enterprise
Dockerも様々な周辺ツールを
提供しはじめました。
https://hub-beta.docker.com/
新しいDockerHub画面も公開し
フィードバックを受付中です。
Docker 1.7
● ● ○ ○
DockerConにあわせて、新しい
Docker 1.7 がリリースされま
した。ブログの投稿をざっと
みていきます。
https://blog.docker.com/2015/06/announcing-docker-1-7-multi-host-networking-plugins-and-orchestration-updates/
25Introduction to Docker Basic Course
‣ ネットワーク
‣ プラグイン・システム
‣ その他
• ZFS ストレージドライバ
• 新ライブラリ libnetwork
• 新ボリュームシステム
Docker Engine 1.7 Dockerの本体(デーモン)を
最近ではDocker Engineの様に
呼称されています。
root@docker2:~# docker network ls
NETWORK ID NAME TYPE
93c80db1b824 host host
e7801bd12b68 bridge bridge
ef47199326ce none null
root@docker2:~# docker network create test
753a6c99c0cf6d4e843aaca7b92ef999bfa0e2f41877f967ad76a43aef7a970a
root@docker2:~# docker network ls
NETWORK ID NAME TYPE
ef47199326ce none null
93c80db1b824 host host
e7801bd12b68 bridge bridge
753a6c99c0cf test bridge
root@docker2:~# docker network info 75
Network Id: 753a6c99c0cf6d4e843aaca7b92ef999bfa0e2f41877f967ad76a43aef7a970a
Name: test
Type: bridge
次期Docker 1.8では、新しい
ネットワーク管理コマンドが
サポートされる予定です。
開発版(1.8-dev)で試せます。
27Introduction to Docker Basic Course
‣ Docker Engine の機能拡張(実験的)
‣ サードパーティ製のDocker拡張ツール
Flocker plugin - ネットワーク・ドライバ・プラグイン
• Weave http://weave.works/ ( Weaveworks, Glider Labs )
– Weave Net、Weave Scope、Weave Run
Calico Plugin – ネットワーク・ドライバ・プラグイン
http://www.projectcalico.org/
Weave plugin - ボリューム・プラグイン
• Flocker https://clusterhq.com/flocker/ ( ClusterHQ )
– ZFS を使うボリューム管理システム
プラグイン プラグインの形式やファイル
があるわけでなくDockerAPIを
通しての機能拡張を呼称。
現時点で3つ公開中です。
root@ubuntu:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
PORTS NAMES
4e4646bad5e1 peterbourgon/tns-lb:latest "/lb app1 app2" About a minute ago Up About a minute
0.0.0.0:8001->80/tcp root_lb1_1
6572819808c6 peterbourgon/tns-lb:latest "/lb app1 app2" About a minute ago Up About a minute
0.0.0.0:8002->80/tcp root_lb2_1
24d3268d8bcb peterbourgon/tns-app:latest "/app db1 db2 db3" About a minute ago Up About a minute
8080/tcp root_app1_1
da2bdfc8461f peterbourgon/tns-app:latest "/app db1 db2 db3" About a minute ago Up About a minute
8080/tcp root_app2_1
83b8aa62ae99 peterbourgon/tns-db:latest "/db db1 db2 db3" About a minute ago Up About a minute
9000/tcp root_db3_1
cdcc82cc7ed4 peterbourgon/tns-db:latest "/db db1 db2 db3" About a minute ago Up About a minute
9000/tcp root_db2_1
8d52027e32c7 peterbourgon/tns-db:latest "/db db1 db2 db3" About a minute ago Up About a minute
9000/tcp root_db1_1
個人的にWeaveScopeが面白い
です。たとえば、沢山のコン
テナが起動すると、関係性が
分かりづらいのですが、、
$ wget –O scope git.io/scope
$ chmod a+x ./scope
$ sudo mv scope /usr/local/bin/scope
$ nohup scope &
それが、ブラウザ上で関係を
簡単に視覚化してくれます。
scopeバイナリを起動した後、
ポート4040にアクセスします。
※http://weave.works/
ネットワーク、コンテナ、ア
プリケーション(PID)レベルで
繋がりをリアルタイム視覚化。
31Introduction to Docker Basic Course
‣ オーケストレーション強化
• Docker Machine, Swarm, Compose それぞれ v0.3.0 リリース
• 以前のバージョンに比べ、お互いが連携
Docker Engine 1.7 Pluginはサードパーティー製、
Dockerはクラスタ管理に注力。
いわゆるオーケストレーショ
ンと呼ばれる分野です。
オーケストレーション
● ● ● ○
このアイコンを見てると、
┌──────────────────────┐
│ドッカースウォームが あらわれた! │
│ドッカーコンポーズが あらわれた! │
│コマンド? │
│ ∨ │
└━━━━━━━━━━━━━━━━━━━━━━┘
┌────┐
│ていじで │
│かえろう │
└━━━━┘
┌──────コマンド─────┐
│ たたかう じゅもん │
│ にげる げんじつとうひ │
└━━━━━━━━━━━━━━━┘
>
敵が現れた的な
感じがありますが・・・
社外開発環境 本番環境ステージング環境
社内共有開発環境
個人開発環境
社内テスト環境
社外開発環境 本番環境ステージング環境
CI/CD Docker レジストリ
Docker動作環境(docker machine)
様々な環境を繋ぎ混むツール
という位置付けです。
36Introduction to Docker Basic Course
‣ Docker 動作環境の自動作成
仮想サーバの起動と Docker のプロビジョニングを自動的に行う
‣ コマンドラインで使うツール
docker-machine –d <ドライバ> [option] マシン名 …のように、コマンドで操作
‣ Linux, Windows, Mac OS X に対応
‣ VirtualBox だけでなく、多くのクラウドに対応
Amazon Web Services, DigitalOcean, exoscale, Google Compute Engine, SoftLayer, Azure, Hyper-V,
OpenStack, RackSpace, VMwareFusion, VMwarea vCloud Air, VMware vSphere, SSH 可能なリモートホスト
Docker Machine まず1つめ。これまでの
boot2dockerにとって変わるよ
うなものです。まだベータ版
であり本番での利用は非推奨。
Mac OSやWindows機でDockerを
使うには、boot2dockerを入れ
るのが一般的です。
リモートも一緒に管理します。
クラウド上では仮想マシンを
起動し、さらにDockerを設定
する必要がありました。
docker machineはマシン起動
とセットアップも自動的に行
います。
今回のバージョン0.3.0からは
ファイルやディレクトリを
複製するコマンドがサポート。
http://qiita.com/zembutsu/items/9d189da5d2c7708717a3
日本語で詳しくはコチラをご
覧ください。
42Introduction to Docker Basic Course
‣ Docker クラスタ管理ツール
Docker ホストの集まりを作成したり、アクセスできるようにするツールで、API を持つ
‣ コマンドラインで操作
docker-machine で環境を作り、docker run swarm create
‣ クラスタ形成
ディスカバリ(マネージャへの登録に、consul や etcd にも対応)
フィルタ(コンテナを配置する条件の設定は、Docker を抽象化)
ストラテジ(どこのノードにコンテナを自動配置するか方針設定)
Docker Swarm Swramは、Machineとの連携が
進みました。Machineで作成時
簡単にクラスタを組めます。
VM
Docker
Swarm
Manager
Dokku, Docker Compose, Krane, Jenkins, Apache Mesos …
VM
Docker
VM
Docker
VM
Docker
…
コンテナ コンテナ コンテナ コンテナ
どこにコンテナを置くか管理
するものです。
http://qiita.com/zembutsu/items/a1f0a89581d1d5832e2e
こちらも詳しくは
45Introduction to Docker Basic Course
‣ 複数コンテナのアプリケーション自動設定
Dockerfile を複数のコンテナに拡張したようなイメージ
‣ コマンドラインで操作
docker-compose docker-compose.yml
‣ Linux, Windows, Mac OS X に対応
‣ 構成情報を YAML 形式のファイルで定義
Docker Compose 最後にComposeという複数の
コンテナをファイルで管理。
docker-compose.yml
web:
build: .
command: php -S 0.0.0.0:8000 -t /wordpress
ports:
- "8000:8000"
links:
- db
volumes:
- .:/wordpress
db:
image: orchardup/mysql
environment:
MYSQL_DATABASE: wordpress
Dockerfile
FROM orchardup/php5
ADD . /wordpress
複数のコンテナを1つの設定
ファイルに集約します。が、
現時点で複数ホストにわたる
管理は行えません。開発中の
Swarm や Machine との連携が
待たれます。
http://qiita.com/zembutsu/items/c277830c469d7a25ba15
詳しくは(略
またお前か!!
まとめ
● ● ● ●
49
まとめ
Docker技術情報アップデート 2015年7月号
‣ 現状整理とDockerのツール群
Dockerを取り巻く状況が、DockerCon 2015 で更に加速。
‣ Docker 1.7 で何が変わったのか?
サードパーティ製プラグイン、ネットワーク、ボリューム管理、そしてオーケストレーション。
‣ Dockerのオーケストレーション
Docker Machine、Docker Swarm、Docker Compoes がバージョン v0.3.0 に。そして、それぞれの連携へ。
コンテナを試す時期から、どうやってプロダクションで使うかへ
50
‣ http://blog.docker.com
• DockerCon 2015 Videos: Day 1 and Day 2 of Keynotes
– http://blog.docker.com/2015/06/dockercon-2015-keynote-videos/
• Announcing Docker 1.7: Multi-host networking, plugins and orchestration updates
– https://blog.docker.com/2015/06/announcing-docker-1-7-multi-host-networking-plugins-and-
orchestration-updates/
• Extending Docker With Plugins
– http://blog.docker.com/2015/06/extending-docker-with-plugins/
• Docker and Broad Industry Coalition Unite to Create Open Container Project
– http://blog.docker.com/2015/06/open-container-project-foundation/
参考情報
References

Docker技術情報アップデート 2015年7月号