DUICUO

OpenStack は Docker のサポートを提供します。

Docker公式サイトの最近の記事で、DockerがOpenStack IcehouseからHeatと統合される予定であることが報じられました。Dockerは、OpenStack Havanaの初期リリースでNovaドライバーとして既にOpenStackに統合されていました。この記事では、まずDockerについて簡単に紹介し、その後OpenStackとの統合について説明します。

Docker入門

Dockerはオープンソースのアプリケーションコンテナエンジンであり、ハードウェア、言語、フレームワーク、パッケージングシステムに依存しないポータブルコンテナへのアプリケーションのデプロイを自動化します。標準的なDockerコンテナには、ソフトウェアコンポーネントとそのすべての依存関係(バイナリ、ライブラリ、設定ファイル、スクリプトなど)が含まれます。DockerはLXCを拡張し、高レベルAPIを使用してプロセス間分離のための軽量な仮想化ソリューションを提供します。cgroupsとAUFSをサポートする任意の64ビットLinuxカーネルで実行できます。

ドックは次の用途に使用できます。

  • あらゆるアプリケーションの自動パッケージ化と展開
  • 軽量なプライベートPaaSクラウドを作成する
  • 開発およびテスト環境の構築
  • スケーラブルなウェブアプリケーションを展開する

Dockerは急速に発展しています。そのコントリビューターであるPaaSクラウドプロバイダーのhttps://dotcloud.comは、2014年1月にシリーズBで1,500万ドルの資金調達を実施しました。Dockerコミュニティも非常に活発で、Docker Chineseコミュニティは最近、中国各地の複数の都市でDockerミートアップを開催し、成功を収めました。Dockerに関する詳細は、http://www.openstack.cn/p828.htmlをご覧ください。

DockerとNovaの統合

OpenStack Havanaリリースでは、DockerはNova内のドライバーとしてOpenStackに統合され、Dockerコンテナを仮想マシンとして扱います。コードはhttps://github.com/openstack/nova/tree/stable/havana/nova/virt/dockerで入手できます。

しかし、香港で開催されたOpenStack Design Summitにおいて、DockerドライバーをNovaプロジェクトからStackForgeプロジェクトに移管し、開発を行うことが決定されました。各OpenStackプロジェクトは、まずStackForgeで開発を進め、その後、Incubatedプログラムへの参加を申請し、試用期間と技術委員会による投票を経て、正式にOpenStack統合プロジェクトとなります。OpenStackプロジェクトにおけるDockerドライバーのメインメンテナーは、「このドライバーについては肯定的なフィードバックをいただいています。CinderとNeutronとの統合が不十分だったことが、私たちが直面した課題でした。StackForgeを利用することで、迅速なイテレーション、新機能の継続的な統合、そしてOpenStack Junoリリースへの再導入が可能になります」と説明しています。そのため、Icehouseリリース以降のDockerドライバーのコードツリーはhttps://github.com/stackforge/nova-dockerとなります。

以下は、OpenStack と Nova Docker ドライバーの統合プロセスのフローチャートです。

Nova Docker ドライバー

Nova Dockerドライバーには、Dockerの内部REST APIと通信するための小さなHTTPクライアントが組み込まれており、HTTP APIを使用してDockerコンテナを制御し、コンテナ情報を取得します。Glanceを設定することで、DockerはGlanceからイメージを取得・アップロードできるようになります。DockerとNovaの統合に関する詳細な設定手順については、https://wiki.openstack.org/wiki/Dockerをご覧ください。

DockerとHeatの統合

OpenStackコミュニティでは、DockerをNovaのハイパーバイザーとして使用するよりも、Heatを使用してDockerの利用を調整することを好んでいます。NovaのDockerドライバのアプローチにはいくつかの欠点があります。例えば、標準API拡張は、Dockerには適用できない仮想マシン固有の機能を使用しています。さらに、Dockerを仮想マシンとして扱うことで、Novaはコンテナ接続(主にコンテナ間通信)といったDockerの便利な機能を活用することが難しくなります。これらの理由から、Heatの方がより適切な選択肢です。

HeatはOpenStack内でリソースオーケストレーション機能を提供し、AWS CloudFormationと互換性があり、ユーザーはリソースを記述したテンプレートをアップロードできます。Heatのプラグインメカニズムを使用することで、ユーザーは従来のOpenStackのデプロイメント手法に基づいてDockerコンテナをデプロイおよび管理できます。HeatプラグインはOpenStackコミュニティに受け入れられており、Icehouseリリースに含まれる予定です。コードはhttps://github.com/openstack/heat/tree/master/contrib/dockerで入手できます。

次の例は、Heat を使用して Docker の使用を調整する方法を示しています。

  1. 説明: Docker コンテナ内で cirros を実行する単一のコンピューティング インスタンス。
  2. リソース:
  3. 私のインスタンス:
  4. タイプ: OS::Nova::Server
  5. プロパティ:
  6. key_name: ewindisch_key
  7. 画像: ubuntu-precise
  8. フレーバー: m1.large
  9. ユーザーデータ: #include https://get.docker.io
  10. 私のDockerコンテナ:
  11. タイプ: DockerInc::Docker::Container
  12. docker_endpoint: { get_attr: [my_instance, first_address] }
  13. 画像: cirros

Heat Dockerプラグイン

上記の例では、「my_docker_container」のようなフラグメントを追加するだけで複数のコンテナを作成し、それらを相互に接続できます。OpenStack APIによる制限を受けず、Docker Remote APIを最大限に活用できます。

結論

Dockerは仮想マシンと比較してリソース利用率が高く、数秒でのデプロイとクロスプラットフォームなアプリケーションのパッケージングとデプロイを可能にします。数多くのPaaSプラットフォーム製品の中でも急速な成長を遂げ、コミュニティの認知度と支持を獲得し、複数の著名なプロジェクトとの統合を実現しています。Heatプロジェクトとの統合は、IaaSプラットフォームとPaaSプラットフォームを繋ぐ優れた手段となります。OpenStack Junoリリースにおいて、DockerとOpenStack Heatプロジェクトの統合がさらに進むことを期待しています。

著者: @Guo Changbo、EasyStack エンジニア

出典: http://www.openstack.cn/p1423.html

この記事のアドレス: http://linux.cn/article-2909-1.html