Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

36,397 views

Published on

Published in: Technology
  • Be the first to comment

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

  1. 1. "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する レッドハット株式会社 中井悦司 / Etsuji Nakai Senior Solution Architect and Cloud Evangelist v1.3 2015/01/28
  2. 2. 2 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する 自己紹介  中井悦司(なかいえつじ) – Twitter @enakai00  日々の仕事 – Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます。  昔とった杵柄 – 素粒子論の研究(超弦理論とか) – 予備校講師(物理担当) – インフラエンジニア(Unix/Linux専門) 好評発売中!
  3. 3. 3 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する Contents  Dockerが生まれた背景  Dockerが実現するアプリケーション開発の世界  Dockerを本番サービスに適用するメリット  今後の発展
  4. 4. Dockerが生まれた背景
  5. 5. 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
  6. 6. 6 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する Dockerに対するRed Hatの貢献  Red Hatの開発協力により、RHEL対応とさらなる機能拡張を継続 – RHEL7での正式サポート – RHELのThin Provisioning機能対応(ディスク性能の向上) – RHEL7のプロセス管理機能(systemd)との統合 – Docker専用Linuxディストリビューション(Atomic Host)の開発
  7. 7. 7 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する クラウドサービスとしてのPaaS環境の課題 (1)  PaaSのメリット ⇒ 実行環境の構築・管理に手間をかけず、アプリケーション開発に集中 アプリケーション実行環境 (フレームワーク/ライブラリー) サーバー/OS 開発したコードを クラウドにデプロイ アプリケーション プログラム
  8. 8. 8 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する アプリケーション実行環境 (フレームワーク/ライブラリー) サーバー/OS アプリケーション プログラム クラウドサービスとしてのPaaS環境の課題 (2)  アプリケーションのコードと実行環境は、多くの場合、密結合しており、 「ありもの」の実行環境だけでは、不便が生じることも多い 「悪魔は細部に宿る」 ・使いたいフレームワークが無い ・必要なライブラリーが不足 ・ライブラリーバージョンの不整合 ・etc...
  9. 9. 9 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する dotCloudが実行環境のメンテナンスに用意した仕組み  dotCloudは、クラウド内部の仕組みとして、アプリケーションの実行環 境を自動構築して「Dockerイメージ」に固める技術を開発 – さらに、クラウド以外の環境でも利用できるようにオープンソースとして公開 Dockerサービス サーバー/OS アプリケーション プログラム さまざまな実行環境を Dockerイメージとして 作成・メンテナンス Docker イメージ
  10. 10. 10 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する Dockerが提供する基本機能 Dockerfile ① Dockerイメージを自動作成 OSイメージ アプリケーション ライブラリー アプリケーション フレームワーク イメージの 作成手順を記載 Docker イメージ OS上にインストール可能な ものはすべてイメージ化可能 ② Dockerイメージを保存・公開 ③ Dockerサーバーに  イメージを配布・実行
  11. 11. 11 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する (参考)Linuxコンテナーの仕組み コンテナー 物理サーバー/仮想マシン Linuxカーネル アプリケーション アプリケーション ・・・ 物理サーバー/仮想マシン Linuxカーネル ・・・ コンテナー 通常のLinux環境 コンテナーで分割した環境 コンテナーごとに 見える環境が異なる すべてのアプリケーション から同じ環境が見える  「Linuxコンテナー」は、プロセスグループごとに独立したOS環境を見せる技術 – ローカルディスクの内容(ディレクトリー内のファイル) – ネットワーク環境(NIC、IPアドレス) – CPU、メモリー割り当て ※ Dockerよりもずっと古くから存在する技術です。 アプリケーション アプリケーション
  12. 12. 12 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する Dockerとコンテナの関係 コンテナー アプリケーション ディレクトリーツリー Linux上にマウント ルートディレクトリー として割り当て  「Dockerイメージ」の実体は、コンテナーに 割り当てるディスクイメージに、ネットワー ク設定などの環境情報を付与したものにすぎ ません。  Dockerの真の価値は、次のような「イメージ 管理機能」にあります。 – Dockerfile: Dockerイメージを自動作成する仕組み – Docker Hub: Dockerイメージを共有・配布する仕組み Dockerイメージ
  13. 13. Dockerが実現する アプリケーション開発の世界
  14. 14. 14 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する Dockerを活用したアプリケーション開発の世界  ローカルの開発環境を利用しながら、多数の開発者に同一の開発環境を提供。 – テストサーバーにも同じ環境を提供することで、「環境差異による問題発生」を防止  Dockerfileからイメージを自動作成するので、イメージの修正・変更・再配布が容易 – 開発コードのように、実行環境を「バージョン管理」可能に フレームワーク データベース Dockerfile Dockerイメージを 自動作成 開発・テスト環境に Dockerイメージを配布 開発コードを コードリポジトリー にプッシュ CIツールにより インテグレーション テストを自動実行
  15. 15. 15 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する ちょっと脱線:CIツールによる継続的インテグレーション 人間の世界 マシンの世界ビルドとテストの自動実行 結果レポートの作成 テスト結果、コード分析結果 カバレッジの推移など 開発者 コード コミット レポートのフィードバック コード リポジトリ CIツール マシンと人間の役割を明確に 分離したプロセスがCIの肝 このようなCI環境もDockerを 利用すると簡単に準備が可能
  16. 16. Dockerを本番サービスに 適用するメリット
  17. 17. 17 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する フレームワーク データベース アプリケーション フレームワーク ライブラリー Dockerイメージを 本番環境に展開!  テストが実施された「確実動くアプリケーション」をそのままDockerイメージに 固めて、本番環境に自動デプロイするという運用を想像してみましょう・・・。 サービス環境へのDocker適用のメリット
  18. 18. 18 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する Immutable Infrastructureとは? – アプリケーションの設定変更、バージョンアップなどは、稼働中の本番環境を いじるのではなく、大元のコードを変更して再テストした後に、本番環境を新 規構築してそっくり置き換えるという運用手法。 – 運用中の環境変更するリスク(想定外の不具合)を回避して、常にテスト済み の環境を本番提供可能に。 – 同一構成のサーバーを大量に並べるスケールアウト環境で、多数のサーバーの 構成を常に同一に保ち続ける。  Dockerイメージによる自動デプロイにより、これまで実現困難と言われていた 「Immutable Infrastructre」がついに実現可能になります。 Dockerによる自動デプロイのメリット 「Immutable Infrastructre」を実現して 構成管理を容易に!
  19. 19. 今後の発展
  20. 20. 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基盤が開発されていきます
  21. 21. 21 "Docker is NOT Container." ~ Dockerとコンテナ技術、PaaSの関係を理解する サーバー/仮想マシン ・・・ コンテナー Docker サーバー/仮想マシン コンテナー Docker Kubernetes Platform as a Service ・・・ ・・・ 実行リソース提供 アプリケーション実行 実行環境の作成・配備 複数サーバーに跨る オーケストレーション UI、ワークフロー、 モニタリング、etc. RHEL Atomic Host OpenShift 3.0 (参考)今後のRed Hat製品との対応関係 (*) 本資料作成時の予定であり、今後、計画が変更される可能性もあります。
  22. 22. EMPOWER PEOPLE, EMPOWER ENTERPRISE, OPEN INNOVATION.

×