"docker is not container." ~ dockerとコンテナ技術、paasの関係を理解する

22
"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する レッドハット株式会社 中井悦司 / Etsuji Nakai Senior Solution Architect and Cloud Evangelist v1.3 2015/01/28

Upload: etsuji-nakai

Post on 05-Jul-2015

20.977 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

"Docker is NOT Container."

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

レッドハット株式会社

中井悦司 / Etsuji NakaiSenior Solution Architect

and Cloud Evangelist

v1.3 2015/01/28

Page 2: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

2

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

自己紹介

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

日々の仕事– Senior Solution Architect and

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

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

好評発売中!

Page 3: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

3

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

Contents

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

Page 4: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

Dockerが生まれた背景

Page 5: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

Page 6: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

6

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

Dockerに対するRed Hatの貢献

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

Page 7: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

7

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

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

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

サーバー/OS

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

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

Page 8: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

8

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

サーバー/OS

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

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

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

「悪魔は細部に宿る」

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

Page 9: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

9

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

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

Dockerサービス

サーバー/OS

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

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

Dockerイメージ

Page 10: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

10

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

Dockerが提供する基本機能

Dockerfile

① Dockerイメージを自動作成

OSイメージ

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

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

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

Dockerイメージ

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

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

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

Page 11: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

11

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

コンテナー

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

Linuxカーネル

アプ

リケ

ーシ

ョン

アプ

リケ

ーシ

ョン

・・・

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

Linuxカーネル

・・・

コンテナー

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

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

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

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

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

アプ

リケ

ーシ

ョン

アプ

リケ

ーシ

ョン

Page 12: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

12

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

アプ

リケ

ーシ

ョン

ディレクトリーツリー

Linux上にマウント

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

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

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

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

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

Dockerイメージ

Page 13: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

Page 14: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

14

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

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

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

フレームワーク

データベース

Dockerfile

Dockerイメージを自動作成

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

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

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

Page 15: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

15

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

人間の世界

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

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

開発者

コードコミット

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

コードリポジトリ

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

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

Page 16: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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

Page 17: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

17

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

フレームワーク

データベース

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

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

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

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

Page 18: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

18

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

Immutable Infrastructureとは?

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

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

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

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

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

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

Page 19: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

今後の発展

Page 20: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

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基盤が開発されていきます

Page 21: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

21

"Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

サーバー/仮想マシン ・・・

コンテナー

Docker

サーバー/仮想マシン

コンテナー

Docker

Kubernetes

Platform as a Service

・・・

・・・

実行リソース提供

アプリケーション実行

実行環境の作成・配備

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

UI、ワークフロー、モニタリング、etc.

RHEL Atomic Host

OpenShift 3.0

(参考)今後のRed Hat製品との対応関係

(*) 本資料作成時の予定であり、今後、計画が変更される可能性もあります。

Page 22: "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する

EMPOWER PEOPLE,

EMPOWER ENTERPRISE,

OPEN INNOVATION.