29
Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する レッドハット株式会社 中井悦司 / Etsuji Nakai Senior Solution Architect and Cloud Evangelist v1.4 2015/07/30

Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

Dockerが導く新しいシステム環境の世界

~ Dockerとコンテナー技術、PaaSの関係を理解する

レッドハット株式会社

中井悦司 / Etsuji NakaiSenior Solution Architect

and Cloud Evangelist

v1.4 2015/07/30

Page 2: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

2

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

自己紹介

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

日々の仕事– Senior Solution Architect and

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

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

好評発売中!

Page 3: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

3

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Contents

Dockerが生まれた背景 Dockerが実現するアプリケーション開発の世界 Dockerを本番サービスに適用するメリット 今後の発展

Page 4: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

Dockerが生まれた背景

Page 5: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

5

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

History

2011年 米dotCloud社がパブリックのPaaSサービスを提供開始 2013年 dotCloudのコア技術を「Docker」として公開 2014年 dotCloud社は、Docker, Inc.に社名を変更して、Dockerを

     活用したサービス、製品にビジネスを切り替えることを表明 (*)

(*) dotCloudのPaaSサービスは、米cloudControl社が事業を引き継いでサービスを提供中  https://www.dotcloud.com/about.html

Page 6: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

6

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Dockerに対するRed Hatの貢献

Red Hatの開発協力により、RHEL対応とさらなる機能拡張を継続– RHEL7での正式サポート– RHELのThin Provisioning機能対応(ディスク性能の向上)– RHEL7のプロセス管理機能(systemd)との統合– Docker専用Linuxディストリビューション(Atomic Host)の開発

Page 7: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

7

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

クラウドサービスとしてのPaaS環境の課題 (1)

PaaSのメリット⇒ 実行環境の構築・管理に手間をかけず、アプリケーション開発に集中

アプリケーション実行環境(フレームワーク/ライブラリー)

サーバー/OS

開発したコードをクラウドにデプロイ

アプリケーションプログラム

Page 8: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

8

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

アプリケーション実行環境(フレームワーク/ライブラリー)

サーバー/OS

アプリケーションプログラム

クラウドサービスとしてのPaaS環境の課題 (2)

アプリケーションのコードと実行環境は、多くの場合、密結合しており、「ありもの」の実行環境だけでは、不便が生じることも多い

「悪魔は細部に宿る」

・使いたいフレームワークが無い・必要なライブラリーが不足・ライブラリーバージョンの不整合・etc...

Page 9: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

9

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

dotCloudが実行環境のメンテナンスに用意した仕組み dotCloudは、クラウド内部の仕組みとして、アプリケーションの実行環

境を自動構築して「Dockerイメージ」に固める技術を開発–さらに、クラウド以外の環境でも利用できるようにオープンソースとして公開

Dockerサービス

サーバー/OS

アプリケーションプログラム

さまざまな実行環境をDockerイメージとして作成・メンテナンス

Dockerイメージ

Page 10: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

10

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Dockerが提供する基本機能

Dockerfile

① Dockerイメージを自動作成

OSイメージ

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

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

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

Dockerイメージ

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

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

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

Page 11: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

11

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

(参考)Linuxコンテナーの仕組み

コンテナー

物理サーバー/仮想マシン

Linuxカーネル

アプ

リケ

ーシ

ョン

アプ

リケ

ーシ

ョン

・・・

物理サーバー/仮想マシン

Linuxカーネル

・・・

コンテナー

通常のLinux環境 コンテナーで分割した環境

コンテナーごとに見える環境が異なる

すべてのアプリケーションから同じ環境が見える

「Linuxコンテナー」は、プロセスグループごとに独立したOS環境を見せる技術– ローカルディスクの内容(ディレクトリー内のファイル)– ネットワーク環境(NIC、IPアドレス)– CPU、メモリー割り当て

※ Dockerよりもずっと古くから存在する技術です。

アプ

リケ

ーシ

ョン

アプ

リケ

ーシ

ョン

Page 12: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

12

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Dockerとコンテナの関係コンテナー

アプ

リケ

ーシ

ョン

ディレクトリーツリー

Linux上にマウント

ルートディレクトリーとして割り当て

「Dockerイメージ」の実体は、コンテナーに割り当てるディスクイメージに、ネットワーク設定などの環境情報を付与したものにすぎません。

Dockerの真の価値は、次のような「イメージ管理機能」にあります。

– Dockerfile:Dockerイメージを自動作成する仕組み

– Docker Hub:Dockerイメージを共有・配布する仕組み

Dockerイメージ

Page 13: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

Dockerが実現するアプリケーション開発の世界

Page 14: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

14

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Dockerを活用したアプリケーション開発の世界 ローカルの開発環境を利用しながら、多数の開発者に同一の開発環境を提供。

–テストサーバーにも同じ環境を提供することで、「環境差異による問題発生」を防止 Dockerfileからイメージを自動作成するので、イメージの修正・変更・再配布が容易

–開発コードのように、実行環境を「バージョン管理」可能に

フレームワーク

データベース

Dockerfile

Dockerイメージを自動作成

開発・テスト環境にDockerイメージを配布

開発コードをコードリポジトリーにプッシュ

CIツールによりインテグレーションテストを自動実行

Page 15: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

15

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

ちょっと脱線:CIツールによる継続的インテグレーション

人間の世界

マシンの世界ビルドとテストの自動実行結果レポートの作成

テスト結果、コード分析結果カバレッジの推移など

開発者

コードコミット

レポートのフィードバック

コードリポジトリ

CIツールマシンと人間の役割を明確に分離したプロセスがCIの肝

このようなCI環境もDockerを利用すると簡単に準備が可能

Page 16: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

Dockerを本番サービスに適用するメリット

Page 17: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

17

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

フレームワーク

データベース

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

Dockerイメージを本番環境に展開!

テストが実施された「確実動くアプリケーション」をそのままDockerイメージに固めて、本番環境に自動デプロイするという運用を想像してみましょう・・・。

サービス環境へのDocker適用のメリット

Page 18: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

18

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Immutable Infrastructureとは?

–アプリケーションの設定変更、バージョンアップなどは、稼働中の本番環境をいじるのではなく、大元のコードを変更して再テストした後に、本番環境を新規構築してそっくり置き換えるという運用手法。–運用中の環境変更するリスク(想定外の不具合)を回避して、常にテスト済み

の環境を本番提供可能に。–同一構成のサーバーを大量に並べるスケールアウト環境で、多数のサーバーの

構成を常に同一に保ち続ける。

Dockerイメージによる自動デプロイにより、これまで実現困難と言われていた「Immutable Infrastructre」がついに実現可能になります。

Dockerによる自動デプロイのメリット

「Immutable Infrastructre」を実現して構成管理を容易に!

Page 19: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

今後の発展

Page 20: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

20

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Kubernetes:Dockerをより高度に管理する仕組みを提供

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

今後は、Kubernetesを利用したDevOps基盤が開発されていきます

Page 21: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

21

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Kubernetesの役割は、複数の物理サーバーを統合して1つの「Dockerサーバー」に見せることです。

– Kubernetesが提供する機能の例• Dockerイメージの自動配置• コンテナーを配置するサーバーの最適化• コンテナー間のネットワーク通信経路の確保• ダイナミックなコンテナーの増減• サーバー障害時のコンテナー再配置• など・・・

Kubernetesの基本機能

・・・

・・・

Page 22: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

22

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Kubernetesの基本サーバー構成

etcd

・・・

バックエンドデータベース(KVS)

Kubernetes MasterKubernetes Node (Minion)

・・・

クラスタ構成で負荷分散可能

Docker Docker Docker

必要に応じて追加可能

Docker Registry

1台のMasterから複数のNodeを管理するシンプルなアーキテクチャーです。–現在は、Masterを冗長化する機能はありませんので、必要に応じてActive-Standbyクラ

スターを構成します。–バックエンドデータベース(etcd)を外出しにしておけば、IPアドレスのFailoverのみで

構わないはずです。

Page 23: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

23

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

Kubernetesのネットワーク構成

etcd KubernetesMaster

DockerRegistry

オーバーレイネットワークとして構成

・・・

物理的には、全サーバーを共通のサービスネットワークに接続するだけで利用可能です。

ただし、コンテナ間通信用の内部ネットワークをオーバーレイネットワークとして用意する必要があります。– Flannel、Open vSwitchなどでオーバーレイネットワークを構成します。

サービスネットワーク192.168.122.0/24

Node

docker0

Node

docker0

内部ネットワーク10.1.0.0/16

Page 24: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

24

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

サーバー/仮想マシン

Docker

サーバー/仮想マシン

Docker

Kubernetes

DevOps環境

・・・

実行リソース提供

コンテナー管理

複数サーバーに跨るオーケストレーション

UI、モニタリング、イメージ作成ワークフロー

etc.

RHEL Atomic Host

OpenShift v3

OpenShift v3:DockerによるDevOps環境を実現

・・・

・・・

OpenShift v3は、Docker/Kubernetesをコアコンポーネントとして、インテグレートされたDevOps環境を提供します。

Page 25: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

25

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

OpenShift v3での機能拡張

OpenShift v3では、Kubernetes単体に対して、次のような機能拡張がなされています。

–外部ネットワーク(SDN)との連携• OpenShift v3のデフォルトでは、Open vSwitchを利用して、VXLANによるoverlayネットワーク

を構成します。今後は、プラグイン方式による外部ネットワーク(SDN)との連携機能の提供が予定されています。

– URLによるサービスへのアクセス• Kubernetesでは、外部からサービスにアクセスする際は、ノードのIPアドレスを明示的に指定す

る必要があります。OpenShift v3では、サービスごとに固有のURLを割り当てて、URLによる透過的なアクセスが可能になります。

–マルチテナントでの利用• マルチテナントで利用するためのインターフェースが提供されます。開発用/テスト用/本番用

で物理ノードを分離するなどの管理も可能です。

–永続ストレージの提供• コンテナーが停止してもデータが保存される永続ストレージが提供されます。

–イメージビルド/ローリングアップデート機能の提供• Kubernetesでは、使用するイメージは、レジストリーに事前登録してある前提です。OpenShift

v3では、gitにソースコードをプッシュすると、「ビルド→テスト→イメージ化→レジストリー登録」の一連の処理が自動化できるようになっています。

Page 26: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

26

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

OpenShift v3のシステムコンポーネント

https://github.com/openshift/openshift-pep/blob/master/openshift-pep-013-openshift-3.md#system-components

外部ネットワーク(SDN)連携

ヘルスチェック&オートスケール

イメージ作成・管理

イベント管理

コンテナ配置

Page 27: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

27

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

階層型イメージの自動アップデート

RHEL7 (v1)

PHP (v1)

RHEL7 (v1)

RHEL7 (v1)

PHP (v1)

App (v1)

RHEL7 (v1)

PHP (v1)

App (v2)

RHEL7 (v1)

PHP (v2)

RHEL7 (v1)

PHP (v2)

App (v2)

新しいアプリケーションイメージを自動作成

RHEL7 (v2)

PHP (v2)

App (v2)

RHEL7 (v2)

PHP (v2)

RHEL7 (v2)

新しいPHPイメージを自動作成

セキュリティアップデート

セキュリティアップデート

OS管理担当

MW管理担当

アプリ開発者

Page 28: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

28

Dockerが導く新しいシステム環境の世界 ~ Dockerとコンテナー技術、PaaSの関係を理解する

チーム間でのイメージの引き渡し

App (v1.0) App (v1.1) App (v1.2) App (v1.3)

アプリ開発者

App (v1.1)

App (v1.2)

App (v1.2)test test

prod

QAチーム

デプロイチーム

「test」タグを付けて引き渡し

「prod」タグを付けて引き渡し

本番用ノードにデプロイ

既存バージョンを稼働したままローリングアップデート

Page 29: Dockerが導く新しいシステム環境の世界jp-redhat.com/wpdl/dp/Docker_PaaS.pdf · Docker Kubernetes DevOps環境 ・・・ 実行リソース提供 コンテナー管理

EMPOWER PEOPLE,

EMPOWER ENTERPRISE,

OPEN INNOVATION.