18
Docker活用パターンの整理・どう組み合わせるのが正解?! Ver1.1 中井悦司 Twitter @enakai00 オープンクラウド・キャンパス Docker活用パターンの整理 Docker/OpenStack/Ansible/Kubernetes/OpenShift/etc… どう組み合わせるのが正解?!

Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Embed Size (px)

Citation preview

Page 1: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

Ver1.1 中井悦司Twitter @enakai00

オープンクラウド・キャンパス

Docker活用パターンの整理Docker/OpenStack/Ansible/Kubernetes/OpenShift/etc…

どう組み合わせるのが正解?!

Page 2: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus2

Docker活用パターンの整理・どう組み合わせるのが正解?!

自己紹介

中井悦司(なかいえつじ)– Twitter @enakai00

日々の仕事– Senior Solution Architect and

Cloud Evangelist at Red Hat K.K.企業システムでオープンソースの活用を希望されるお客様を全力でご支援させていただきます。

昔とった杵柄– 素粒子論の研究(超弦理論とか)– 予備校講師(物理担当)– インフラエンジニア(Unix/Linux専門)

好評発売中!

Page 3: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus3

Docker活用パターンの整理・どう組み合わせるのが正解?!

最近の趣味

http://enakai00.hatenablog.com/entry/2016/02/29/121321

Page 4: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

Dockerの役割をもう一度確認しよう!

Page 5: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus5

Docker活用パターンの整理・どう組み合わせるのが正解?!

Dockerが提供する基本機能

Dockerfile

① Dockerイメージを自動作成

OSイメージ

アプリケーションライブラリー

アプリケーションフレームワーク

イメージの作成手順を記載

Dockerイメージ

OS上にインストール可能なものはすべてイメージ化可能

② Dockerイメージを保存・公開

③ Dockerサーバーに イメージを配布・実行

Page 6: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

IaaS基盤へのアプリケーションデプロイにDockerを使ってみよう!

Page 7: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus7

Docker活用パターンの整理・どう組み合わせるのが正解?!

OpenStackによる自動化(オーケストレーション)手法

Dockerが無かった時代は・・・– 仮想マシン、ストレージ、ネットワークなどのインフラは、OpenStackで自動構成– ゲストOS上のアプリはChef/Ansible/Puppetなどの構成管理ツールで自動構成

ゲストOSとアプリの管理が別れているため「Immutable」な運用が困難!– ゲストOSのテンプレートはOpenStack側で管理– 仮想マシン起動時に動的にアプリの導入・設定を実施

「第14章 Dockerを利用したアプリケーション展開」より引用

ゲストOSの変更に起因するアプリ導入の失敗が発生

Page 8: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus8

Docker活用パターンの整理・どう組み合わせるのが正解?!

OpenStackとDockerの組み合わせ手法

Dockerを用いた運用だと・・・– OpenStackは、「インフラ+DockerホストOS」の提供に専念– アプリの実行環境は、Dockerイメージで作成・管理・デプロイ

インフラとアプリの管理を分離することで「Immutable」な運用が容易に!– ゲストOSのテンプレートはDockerの稼働環境を提供– 事前作成済みのDockerイメージを配布してアプリを起動

アプリの導入・管理をOpenStackから分離可能

Page 9: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus9

Docker活用パターンの整理・どう組み合わせるのが正解?!

「1VM - 1コンテナ」方式でDockerを使ってみる

仮想マシン上のアプリケーションをコンテナイメージ化することで、アプリケーションのデプロイを安全/簡単にします。

– 「1仮想マシンに1アプリケーション」という配置はあえて変更しないことで、運用方法やアプリケーションのデザインへの影響を最小限に留めます。

–外部からアプリケーションに接続するユーザー/外部システムは、アプリケーションがコンテナ化されていることを意識する必要がありません。

OpenStack/仮想化基盤

仮想マシン(ゲストOS)

アプリA

・・・

・・・

これまでの環境 アプリケーションのコンテナイメージ化

OpenStack/仮想化基盤

仮想マシン(Dockerホスト)

アプリA(コンテナ

 イメージ)

仮想マシン(Dockerホスト)

アプリB(コンテナ

 イメージ)

・・・

・・・

仮想マシン(ゲストOS)

アプリB

Page 10: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus10

Docker活用パターンの整理・どう組み合わせるのが正解?!

Ansibleによる複数インスタンス環境のオーケストレーション

永続データ領域

OS領域

コンテナ(MySQL)

/data

コンテナイメージ

Dockerデーモン

/var/lib/mysql

フローティングIP

OS領域

コンテナ(node.jsアプリ)

コンテナイメージ

Dockerデーモン

フローティングIPフローティングIPにアクセス

フローティングIPにアクセス

接続先DBのIP/ポートは環境変数で参照

Ansibleを利用すると、OpenStack APIによる仮想インフラの構成とDockerによるアプリケーション配布のワークフローをまとめて自動化も可能に

アプリケーション利用者

Page 11: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

11

サーバーの境界を意識しない世界を見てみよう!

Page 12: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus12

Docker活用パターンの整理・どう組み合わせるのが正解?!

Kubernetes:複数ホストのDockerを管理する仕組みを提供

http://jp.techcrunch.com/2014/07/11/20140710google-microsoft-ibm-and-others-collaborate-to-make-managing-docker-containers-easier/

Page 13: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus13

Docker活用パターンの整理・どう組み合わせるのが正解?!

サーバーの境界を意識しないアプリケーションデプロイ

コンテナの配置先を自動的に振り分ける仕組みを用いて、複数ホストを「1つのコンピューティングリソース」として活用します。

アプリケーションを機能単位に分割してコンテナ化することで、さらなるメリットが得られます。

–必要な機能を負荷に応じてオートスケールします。– 機能単位でコンテナを入れ替えることにより、稼働中のアプリケーションの動的な機能

変更が可能になります。

Dockerホスト Dockerホスト Dockerホスト ・・・

複数ホストを束ねて「1つのコンピュータ」として活用

マイクロサービス化アプリケーション

Page 14: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus14

Docker活用パターンの整理・どう組み合わせるのが正解?!

今後の方向性コンテナ化とマイクロサービス化は、アプリケーションの特性に応じた併用が可

能だと考えます。

–複数サービスの共通機能(ある程度固定化した機能)は、コンテナ化でSaaS的に提供– サービス特有の機能(頻繁な変更が求められる部分)は、マイクロサービス化して

OpenShiftで開発・実行– いずれの場合もアプリケーションとインフラ環境の分離性を高めることで、クラウド間

での環境移行は圧倒的に容易

OpenStack

仮想マシン ・・・

・・・

アプリケーションのコンテナ化で本番デプロイを安全・迅速に

OpenStack

ベアメタルサーバー

ベアメタルサーバー ・・・

アプリケーションのマイクロサービス化でオートスケール、動的機能拡張を実現

仮想マシン

仮想マシン

Dockerによるコンテナ化OpenShiftによるマイクロサービス化

Page 15: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

15

おまけ

Page 16: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus16

Docker活用パターンの整理・どう組み合わせるのが正解?!

(おまけ)OpenShiftがGCPで使えるようになります!

http://googlecloudplatform-japan.blogspot.jp/2016/01/red-hat-openshift-dedicated-google.html

Page 17: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Open Cloud Campus17

Docker活用パターンの整理・どう組み合わせるのが正解?!

OpenShiftにおける役割分担

アプリ開発者

開発環境構成テンプレート

テンプレート管理者公式RHELイメージ

Dockerfile

テスト担当者

開発環境イメージ

テスト環境構成テンプレート

開発中アプリイメージ

ソースコード

動作確認

コード開発

テスト用デプロイ環境

動作確認

本番環境構成テンプレート

開発用デプロイ環境本番用デプロイ環境

開発済みアプリイメージ

テスト済みアプリイメージ

リリース担当者

http://www.slideshare.net/enakai/open-shift-v3

Page 18: Docker活用パターンの整理 ― どう組み合わせるのが正解?!

Docker活用パターンの整理・どう組み合わせるのが正解?!

中井悦司Twitter @enakai00

オープンクラウド・キャンパス

Docker&OpenShiftでマイクロサービスアーキテクチャーを実現!