第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

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

description

下記のしすなま!録画と併せてご覧ください。資料・録画の内容は生放送時点のものです。 第37回「Dockerのユースケースと将来」(2014/10/30) 中井悦司様 レッドハット(株) シニアソリューションアーキテクト&クラウドエバンジェリスト 東根作成英 Lenovo サーバー・エバンジェリスト http://www.ustream.tv/recorded/54681645

Transcript of 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

Page 1: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

"Docker is NOT Container."

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

レッドハット株式会社

中井悦司 / Etsuji NakaiSenior Solution Architect

and Cloud Evangelist

v1.1 2014/11/12

Page 2: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

2

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

自己紹介

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

日々の仕事– Senior Solution Architect and

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

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

好評発売中

Page 3: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

3

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

Contents

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

Page 4: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

Dockerが生まれた背景

Page 5: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

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: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

6

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

Dockerに対するRed Hatの貢献

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

Page 7: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

7

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

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

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

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

サーバー/OS

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

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

Page 8: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

8

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

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

サーバー/OS

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

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

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

「悪魔は細部に宿る」

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

Page 9: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

9

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

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

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

Dockerサービス

サーバー/OS

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

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

Dockerイメージ

Page 10: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

10

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

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

コンテナー

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

Linuxカーネル

アプ

リケ

ーシ

ョン

アプ

リケ

ーシ

ョン

・・・

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

Linuxカーネル

・・・

コンテナー

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

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

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

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

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

アプ

リケ

ーシ

ョン

アプ

リケ

ーシ

ョン

Page 11: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

11

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

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

アプ

リケ

ーシ

ョン

ディレクトリーツリー

Linux上にマウント

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

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

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

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

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

Dockerイメージ

Page 12: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

12

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

Dockerが提供する基本機能

Dockerfile

① Dockerイメージを自動作成

OSイメージ

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

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

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

Dockerイメージ

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

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

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

Page 13: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

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

Page 14: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

14

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

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

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

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

フレームワーク

データベース

Dockerfile

Dockerイメージを自動作成

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

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

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

Page 15: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

15

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

ちょっと脱線:ソフトウェアの変更要求が高まる背景

設計要件定義   コーディング テスト 運用

要件定義の際に決めたシステムが・・・ 運用開始時は既に時代遅れに!

ビジネス要件の変化と技術の進歩に開発速度が追いつかない現状

Page 16: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

16

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

ちょっと脱線:ソフトウェアの変更要求が高まる背景

設計

要件定義

テスト

運用

開発期間の短縮

継続的なアップデート

設計

要件定義

テスト

設計

要件定義

テスト

開発期間の短縮と継続的なアップデートが必要に。

「継続的インテグレーション」(CI) の適用

「継続的デリバリー」の実践

コ ディング

ー コ ディング

ー コ ディング

Page 17: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

17

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

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

人間の世界

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

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

開発者

コードコミット

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

コードリポジトリ

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

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

Page 18: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

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

Page 19: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

19

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

Container Usage at Google

We start over 2billion containers per week.

https://speakerdeck.com/jbeda/containers-at-scale

Page 20: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

20

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

フレームワーク

データベース

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

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

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

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

Page 21: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

21

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

Immutable Infrastructureとは?

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

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

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

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

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

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

Page 22: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

今後の発展

Page 23: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

23

"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 24: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

24

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

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

– 開発計画中の機能の例• Dockerイメージの自動配置• コンテナーを配置するサーバーの最適化• コンテナー間のネットワーク通信経路の確保• 負荷に応じてコンテナーを増減するオートスケール• サーバー障害時のコンテナー再配置• など・・・

(参考)Kubernetesの基本機能

・・・

・・・

Page 25: 第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)

EMPOWER PEOPLE,

EMPOWER ENTERPRISE,

OPEN INNOVATION.