Contenu connexe
Similaire à "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Similaire à "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する (20)
Plus de Etsuji Nakai (20)
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
- 1. "Docker is NOT Container."
~ Dockerとコンテナ技術、PaaSの関係を理解する
レッドハット株式会社
中井悦司 / Etsuji Nakai
Senior Solution Architect
and Cloud Evangelist
v1.3 2015/01/28
- 2. 2
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
自己紹介
中井悦司(なかいえつじ)
– Twitter @enakai00
日々の仕事
– Senior Solution Architect and
Cloud Evangelist at Red Hat K.K.
企業システムでオープンソースの活用を希望される
お客様を全力でご支援させていただきます。
昔とった杵柄
– 素粒子論の研究(超弦理論とか)
– 予備校講師(物理担当)
– インフラエンジニア(Unix/Linux専門)
好評発売中!
- 3. 3
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Contents
Dockerが生まれた背景
Dockerが実現するアプリケーション開発の世界
Dockerを本番サービスに適用するメリット
今後の発展
- 5. 5
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
History
2011年 米dotCloud社がパブリックのPaaSサービスを提供開始
2013年 dotCloudのコア技術を「Docker」として公開
2014年 dotCloud社は、Docker, Inc.に社名を変更して、Dockerを
活用したサービス、製品にビジネスを切り替えることを表明 (*)
(*) dotCloudのPaaSサービスは、米cloudControl社が事業を引き継いでサービスを提供中
https://www.dotcloud.com/about.html
- 6. 6
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Dockerに対するRed Hatの貢献
Red Hatの開発協力により、RHEL対応とさらなる機能拡張を継続
– RHEL7での正式サポート
– RHELのThin Provisioning機能対応(ディスク性能の向上)
– RHEL7のプロセス管理機能(systemd)との統合
– Docker専用Linuxディストリビューション(Atomic Host)の開発
- 7. 7
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
クラウドサービスとしてのPaaS環境の課題 (1)
PaaSのメリット
⇒ 実行環境の構築・管理に手間をかけず、アプリケーション開発に集中
アプリケーション実行環境
(フレームワーク/ライブラリー)
サーバー/OS
開発したコードを
クラウドにデプロイ
アプリケーション
プログラム
- 8. 8
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
アプリケーション実行環境
(フレームワーク/ライブラリー)
サーバー/OS
アプリケーション
プログラム
クラウドサービスとしてのPaaS環境の課題 (2)
アプリケーションのコードと実行環境は、多くの場合、密結合しており、
「ありもの」の実行環境だけでは、不便が生じることも多い
「悪魔は細部に宿る」
・使いたいフレームワークが無い
・必要なライブラリーが不足
・ライブラリーバージョンの不整合
・etc...
- 9. 9
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
dotCloudが実行環境のメンテナンスに用意した仕組み
dotCloudは、クラウド内部の仕組みとして、アプリケーションの実行環
境を自動構築して「Dockerイメージ」に固める技術を開発
– さらに、クラウド以外の環境でも利用できるようにオープンソースとして公開
Dockerサービス
サーバー/OS
アプリケーション
プログラム
さまざまな実行環境を
Dockerイメージとして
作成・メンテナンス
Docker
イメージ
- 10. 10
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Dockerが提供する基本機能
Dockerfile
① Dockerイメージを自動作成
OSイメージ
アプリケーション
ライブラリー
アプリケーション
フレームワーク
イメージの
作成手順を記載
Docker
イメージ
OS上にインストール可能な
ものはすべてイメージ化可能
② Dockerイメージを保存・公開
③ Dockerサーバーに
イメージを配布・実行
- 11. 11
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
(参考)Linuxコンテナーの仕組み
コンテナー
物理サーバー/仮想マシン
Linuxカーネル
アプリケーション
アプリケーション
・・・
物理サーバー/仮想マシン
Linuxカーネル
・・・
コンテナー
通常のLinux環境 コンテナーで分割した環境
コンテナーごとに
見える環境が異なる
すべてのアプリケーション
から同じ環境が見える
「Linuxコンテナー」は、プロセスグループごとに独立したOS環境を見せる技術
– ローカルディスクの内容(ディレクトリー内のファイル)
– ネットワーク環境(NIC、IPアドレス)
– CPU、メモリー割り当て
※ Dockerよりもずっと古くから存在する技術です。
アプリケーション
アプリケーション
- 12. 12
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Dockerとコンテナの関係
コンテナー
アプリケーション
ディレクトリーツリー
Linux上にマウント
ルートディレクトリー
として割り当て
「Dockerイメージ」の実体は、コンテナーに
割り当てるディスクイメージに、ネットワー
ク設定などの環境情報を付与したものにすぎ
ません。
Dockerの真の価値は、次のような「イメージ
管理機能」にあります。
– Dockerfile:
Dockerイメージを自動作成する仕組み
– Docker Hub:
Dockerイメージを共有・配布する仕組み
Dockerイメージ
- 14. 14
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Dockerを活用したアプリケーション開発の世界
ローカルの開発環境を利用しながら、多数の開発者に同一の開発環境を提供。
– テストサーバーにも同じ環境を提供することで、「環境差異による問題発生」を防止
Dockerfileからイメージを自動作成するので、イメージの修正・変更・再配布が容易
– 開発コードのように、実行環境を「バージョン管理」可能に
フレームワーク
データベース
Dockerfile
Dockerイメージを
自動作成
開発・テスト環境に
Dockerイメージを配布
開発コードを
コードリポジトリー
にプッシュ
CIツールにより
インテグレーション
テストを自動実行
- 15. 15
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
ちょっと脱線:CIツールによる継続的インテグレーション
人間の世界
マシンの世界ビルドとテストの自動実行
結果レポートの作成
テスト結果、コード分析結果
カバレッジの推移など
開発者
コード
コミット
レポートのフィードバック
コード
リポジトリ
CIツール
マシンと人間の役割を明確に
分離したプロセスがCIの肝
このようなCI環境もDockerを
利用すると簡単に準備が可能
- 17. 17
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
フレームワーク
データベース
アプリケーション
フレームワーク
ライブラリー
Dockerイメージを
本番環境に展開!
テストが実施された「確実動くアプリケーション」をそのままDockerイメージに
固めて、本番環境に自動デプロイするという運用を想像してみましょう・・・。
サービス環境へのDocker適用のメリット
- 18. 18
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Immutable Infrastructureとは?
– アプリケーションの設定変更、バージョンアップなどは、稼働中の本番環境を
いじるのではなく、大元のコードを変更して再テストした後に、本番環境を新
規構築してそっくり置き換えるという運用手法。
– 運用中の環境変更するリスク(想定外の不具合)を回避して、常にテスト済み
の環境を本番提供可能に。
– 同一構成のサーバーを大量に並べるスケールアウト環境で、多数のサーバーの
構成を常に同一に保ち続ける。
Dockerイメージによる自動デプロイにより、これまで実現困難と言われていた
「Immutable Infrastructre」がついに実現可能になります。
Dockerによる自動デプロイのメリット
「Immutable Infrastructre」を実現して
構成管理を容易に!
- 20. 20
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
Kubernetes:Dockerをより高度に管理する仕組みを提供
http://jp.techcrunch.com/2014/07/11/20140710google-microsoft-ibm-and-others-collaborate-to-make-managing-docker-containers-easier/
今後は、Kubernetesを利用した
PaaS基盤が開発されていきます
- 21. 21
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する
サーバー/仮想マシン ・・・
コンテナー
Docker
サーバー/仮想マシン
コンテナー
Docker
Kubernetes
Platform as a Service
・・・
・・・
実行リソース提供
アプリケーション実行
実行環境の作成・配備
複数サーバーに跨る
オーケストレーション
UI、ワークフロー、
モニタリング、etc.
RHEL
Atomic Host
OpenShift 3.0
(参考)今後のRed Hat製品との対応関係
(*) 本資料作成時の予定であり、今後、計画が変更される可能性もあります。