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

Post on 16-Apr-2017

4.166 views 2 download

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

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

Ver1.1 中井悦司Twitter @enakai00

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

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

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

Open Cloud Campus2

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

自己紹介

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

日々の仕事– Senior Solution Architect and

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

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

好評発売中!

Open Cloud Campus3

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

最近の趣味

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

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

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

Open Cloud Campus5

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

Dockerが提供する基本機能

Dockerfile

① Dockerイメージを自動作成

OSイメージ

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

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

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

Dockerイメージ

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

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

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

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

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

Open Cloud Campus7

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

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

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

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

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

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

Open Cloud Campus8

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

OpenStackとDockerの組み合わせ手法

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

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

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

Open Cloud Campus9

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

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

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

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

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

OpenStack/仮想化基盤

仮想マシン(ゲストOS)

アプリA

・・・

・・・

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

OpenStack/仮想化基盤

仮想マシン(Dockerホスト)

アプリA(コンテナ

 イメージ)

仮想マシン(Dockerホスト)

アプリB(コンテナ

 イメージ)

・・・

・・・

仮想マシン(ゲストOS)

アプリB

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によるアプリケーション配布のワークフローをまとめて自動化も可能に

アプリケーション利用者

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

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

11

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

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/

Open Cloud Campus13

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

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

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

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

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

変更が可能になります。

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

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

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

Open Cloud Campus14

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

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

能だと考えます。

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

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

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

OpenStack

仮想マシン ・・・

・・・

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

OpenStack

ベアメタルサーバー

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

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

仮想マシン

仮想マシン

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

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

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

15

おまけ

Open Cloud Campus16

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

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

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

Open Cloud Campus17

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

OpenShiftにおける役割分担

アプリ開発者

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

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

Dockerfile

テスト担当者

開発環境イメージ

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

開発中アプリイメージ

ソースコード

動作確認

コード開発

テスト用デプロイ環境

動作確認

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

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

開発済みアプリイメージ

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

リリース担当者

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

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

中井悦司Twitter @enakai00

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

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