Upload
shuji-yamada
View
1.485
Download
4
Embed Size (px)
Citation preview
1
Shuji Yamada @uzyexeMar 28, 2016
What a Wonderful Docker World(この素晴らしき Docker の世界)
https://www.flickr.com/photos/maerskline/7101140285/
Docker 102
Shuji Yamada @uzyexe
9 years Build &IT Infrastructure Operating Ops. #cloud #network #server #docker #coreos #devops #lean #agile #monitoringlove Works at SAKURA Internet inc.
2
• website: http://uzy-exe.hateblo.jp/ • twitter: https://twitter.com/uzyexe • slideshare: http://www.slideshare.net/uzy_exe • github: https://github.com/uzyexe • dockerhub: https://hub.docker.com/r/uzyexe
2
“What is Docker?”
3
https://www.flickr.com/photos/johnkeane/5408126721/
https://www.flickr.com/photos/yukop/11941236015/
4
• Docker 社によるオープンソース・プロダクトの一つ。
• 標準化されたコードでアプリケーション環境を定義することで、アプリケーション環境をイメージ化することができる。
• アプリケーション環境を確実な再現性を持つ Dockerイメージ形式で配布することで、誰とでも簡単に環境を
• 開発環境や検証環境の共有手段
What is Docker?
5
Docker Image
build Push Provisioning(pull)
• Dockerfile に任意のアプリケーション環境を定義する。 • ビルドしたイメージを Docker Hub などに push する。 • 任意のサーバ上でDocker Hub にあるイメージを pull して稼働させる。
Dockerfile Docker Hub Run
Run
シンプルな Docker ワークフローの例Run
6
Docker HubPush Push
GitHub or
Bitbucket
Provisioning(pull)
Dockerfile
• GitHub、Bitbucket と Docker Hub を連携させることもできる。 • この場合、イメージのビルド処理を Docker Hub に任せることもできる。
Docker Image
Automated Build
Push
Run
Run
Run
7
Push
Automated Build
Push
Push
GitHub or
Bitbucket
Provisioning(pull)
Dockerfile
• Docker イメージは任意の Docker Repository に保管できる。 • Docker イメージの保管先は必ずしも Docker Hub でなくとも構わない。
Repository
Run
Run
Run
Docker Image
8
RepositoryPush
HookPush
GitHub or
Bitbucket
Provisioning(pull)
Dockerfile
• CI サービスにイメージのビルド処理やテスト処理を任せることも可能。 • CI サービスの例:Travis CI、CircleCI、Jenkins など。
CI Service Docker Image
Build and Test
Run
Run
Run
9
Docker Engine
HyperVisor
GuestOS
Server
GuestOS
GuestOS
App-1
App-2
App-1
App-1’
App-3
App-4
App-1
App-2
App-1
App-1’
App-2
App-3
DockerType-1 HyperVisor
OS
HyperVisor
Server
App-1
App-2
App-1
App-1’
App-3
App-4
Type-2!HyperVisor
Bins/Libs Bins/LibsBins/Libs Bins/Libs
Bins/Libs Bins/Libs
Bins/Libs Bins/Libs
GuestOS
GuestOS
GuestOS
OS
Server
https://www.flickr.com/photos/maerskline/7101143435/
Docker の代表的な
10
1. 軽量・省• Docker イメージにはアプリケーションに必要なものしか含まれていない。 • 軽量・省メモリで迅速に起動・停止することが
2. Docker • Windows PC 上でも Macbook 上でも Linux サーバ上でも動く。
3. イメージを• 他人が作成した Docker イメージを再利用できる。• アプリケーション環境をコードで定義できるのでバージョン管理
https://www.flickr.com/photos/christopherbrown/15002659050/
Docker コンテナの課題
• CPU使用率、ストレージ容量などのリソース制御機能が充分ではない。
• 既存のネットワークやストレージやアプライアンスとの親和性が低い。
• コンテナならではの厄介なクセがある。
• Docker 周辺の開発スピードが速すぎる。情報収集が追いつかない。
• いざ本番で利用しようと思うと決して小さくない学習コスト
11
https://www.flickr.com/photos/77108378@N06/17784119510/
Docker 代表的な
12
1. Continuous Integration!• 開発者が任意の環境で迅速にアプリケーションをテストする環境として
2. DevOps!• 開発と運用チームの融合性を高める
3. Big Data / HPC• ビッグデータや HPC など。
4. Infrastructure Optimization!• インフラに関わる各種コストを削減していく
https://www.flickr.com/photos/cote/15789016578/
現在の Docker
13
• 1,400,000,000+ Image Download!
• 240,000+ Repositories on DockerHub!
• 200+ Meetup Groups in 50+ countries!
• 1300+ Contributors!
• 80,000+ Third-party projects on GitHub
https://www.flickr.com/photos/taymtaym/14226257335/
Docker をサポートしているエコシステム群• Config Management Tools *
• Container OS *
• Scheduler/Orchestration/Management *
• Database/BigData *
• Networking *
• Security *
• Monitoring *
14
• Image Registry *
• Hosting/Service Providers *
• Developer Tools *
• Deplopment Platform *
IaaSInfrastructure as a Services
15
PaaSPlatform as a Services
&
What Problem...
16
PaaSPlatform
PaaS の利用におけるユーザビリティ上の
• PaaS のミッションはオペレーション層までを抽象化すること。それ以上の高レベル
• 例えば、アプリケーション層は抽象化されていない。アプリケーションのビルドやパッケージ方法は各 PaaS プロバイダごとに独自の手法を提供
• 他の PaaS 環境への移行コストが大きい。ノウハウが固定化してしまい、結果として PaaS プロバイダにロックインされがち
IaaSInfrastructure
17
IaaS の利用におけるユーザビリティ上の• インフラが抽象化されているが、実際の操作感は各 IaaS プロバイダごとに異なる。
• 各 IaaS プロバイダで API が用意されていれば、各 IaaS プロバイダ間におけるユーザビリティ(操作感)のギャップは埋めることができる。しかし、本格的に API を利用しようと思うと学習コストや開発コストが無視できない。
• CLI を独自提供している IaaS プロバイダも存在するが、CLI とベンダロックされてしまう。
The one thing that is truly necessary. (本当に必要なことは何なのか?)
18
https://www.flickr.com/photos/techcrunch/15407337357/
19
“Build, Ship, and Run Any App, Anywhere”!(構築した環境を安全に保管して、好きな場所で迅速に動かすことだけ。)
20
Build• Infrastructure as Code • Continuous Integration (CI/CD) • Secure Signing/Trust • +++
• Trusted Registries • Access Controll • Policies • +++
• Management • Deploy and Scalling • Metrics/Monitoring/Logging • +++
Ship Run
“Build, Ship, and Run Any App, Anywhere”
21
Build• Infrastructure as Code • Continuous Integration (CI/CD)• Secure Signing/Trust • +++
• Trusted Registries • Access Controll• Policies • +++
• Management • Deploy and Scalling • Metrics/Monitoring/Logging • +++
Ship Run
1. Build!• 標準化された定義ファイルを設定するだけで、任意のアプリケーション環境を誰でも利用可能なイメージファイルの形にビルドと。
2. Ship• アプリケーションの開発、テスト、配布のサイクル全体が標準化され、一貫性のあるユーザーインターフェースで操作・管理
3. Run• セキュアかつ確実な再現性をもってスケーラブルなアプリケーション環境を多種多様なプラットフォーム上に展開可能な機能を
“Build, Ship, and Run Any App, Anywhere”
CaaSContainer as a Services
22
Container as a Service Platform Stack
23
CaaSContainer
24
考えられうる CaaS パターン1. プライベート Docker クラウド (例: Docker Datacenter など)
• Docker イメージをプライベート環境にあるレポジトリに保管して、プライベートなオンプレ環境上でアプリケーション環境を稼働するためのソリューションとして
2. パブリック Docker クラウド (例: Docker Cloud など)
• Docker イメージをパブリッククラウド環境にあるレポジトリに保管して、任意のインフラ環境上でアプリケーション環境を稼働するための
3. Docker コンテナ
• Docker イメージをパブリッククラウド環境にあるレポジトリに保管して、インフラを気にせずに任意のアプリケーション環境を稼働するためのソリューションとして
Docker Datacenter
25
https://www.flickr.com/photos/115938778@N06/23137464863/
Volume
Netwroking
Logging
Monitoring
LDAP/AD
Docker UniversalControl Plane
Client
Compose
26
Docker Toolbox Docker Datacenter
Virtual Private CloudOnpremises
Integrations
!
!
!
Docker Trusted Registry
Infrastructure
Docker Swarm
https://www.flickr.com/photos/115938778@N06/23137464863/
Docker Trusted Registry
• Web UI for administrators and users LDAP/AD integration!• Role-based access control!• Docker Content Trust image signing and verification!• Garbage collection for saving memory space!• User audit logs
27
• GUI management for clusters, apps, containers, images, networks, volumes. Monitoring and logging
• Monitoring / Logging of UCP users and • Out of the box High availability!• LDAP/Active Directory• Role-based-access control for teams• SSO and push/pull images from Docker Trusted Registry(DTR)• Out of the box TLS• Docker native stack with Swarm, Compose, CS • Full Docker API compatible
Docker Universal Control Plane
Docker Datacenter
Docker Cloud
28
https://www.flickr.com/photos/outofideas/178040396/
Volume
Client
Compose
Netwroking
Logging
Monitoring!
!
!
Docker Cloud
29
Docker Toolbox Docker Cloud
Onpremises
Integrations
!
!
!
Docker Hub
Infrastructure
Cloud (public/private)
https://www.flickr.com/photos/34121831@N00/6027016005/
30
Docker Cloud• Manage node clusters!
• Pull images from Docker Hub!
• Deploy containers across nodes!
• Monitor and scale applications
• Automated builds!
• Webhooks!
• image scanning!
• Role based access control
Docker Hub
Docker Container Hosting
31
https://www.flickr.com/photos/johnkeane/5408126721/
Volume
Netwroking
Logging
Monitoring
!
!
!
User Control Panel
Client
Compose
32
Docker Toolbox Container Hosting
Cloud (public/private)Onpremises
Integrations
!
!
!
Registry
Infrastructure
Orchestration Tools
or
or
https://www.flickr.com/photos/alreadytaken/2504312455/
33
Docker Container Hostings2014-11 Google Container Engine2014-11 Amazon EC2 Container Service2014-12 Giant Swarm!2015-03 sloppy.io2015-03 Arukas!2015-06 profitbricks!2015-07 mocloud.io!2015-09 2015-10 Carina by RackSpace
2010-12 2013-11 Tutum2013-11 2013-11 2013-11 Resin.io!2014-02 ContainerShip2014-08 Jelastic!2014-09 2014-11 Joyent Triton
https://www.flickr.com/photos/maerskline/7101140285/
まとめ
• Docker の世界観(ドッカー・ワールド
• Build から Run まで、統一的な一貫したユーザビリティで提供されることが望ましい。
• これを失念してしまうと Docker の強みを失ってしまう。
• 多くの問題を今すぐに解決してくれる夢のテクノロジーではない。
• サーバや仮想マシンが持つ弱みを補完する技術として捉えたほうが良い。
• おそらく、トレンドの流れは Docker Datacenter -> Docker Cloud -
• 今、本格的な利用を検討するなら、まずは Docker Datacenter から
34
Thank You!
35