NetApp Tech OnTap
NetApp Tech OnTap
   
Dockerコンテナ テクノロジでアプリケーションをスピーディーに提供
シェアする NetAppオフィシャルFacebook  

私はネットアップのシステム エンジニアとして、常に新しいテクノロジに注目し、お客様のビジネスのスピードアップに利用できるものはないかと探っています。弊社のCTOであるJay Kiddは、2015年のテクノロジ予測の中で、Dockerと呼ばれる急成長中の新興テクノロジについて次のように語っていますが、私もまったく同意見です。「Dockerは、スケールアウト アプリケーションに最適なコンテナとして、ハイパーバイザーに取って代わる存在です」

私は仮想化畑の人間なので、仮想化コミュニティに積極的に参加しています。2年前からvExpertを務め、ここしばらくはDockerをレーダーとして使ってきました。昨年11月には、運営を手伝っているオンラインの仮想化コミュニティ、Virtual Design Masterの活動の一環として30日間ブログ チャレンジ(30日で30本のブログを執筆する活動です!)に参加し、実際に期間内に、Dockerに関するブログを数多く執筆しました。それ以来、このトピックに注目し続けていたので、この度Tech OnTapから、Dockerをテーマに考えを発表してほしいとの依頼があったことは喜びでした。

Dockerとは

最近のテクノロジの多くは、ハードウェアからインフラを抽象化することに焦点を当てています。Dockerはオープンソースのプラットフォームで、サーバのオペレーティング システムから、その上で稼働しているアプリケーションを抽象化し、それによってワンランク上のインフラ抽象化を実現します。Dockerを使用すると、アプリケーションごとに仮想マシンを起動する必要がなくなり、代わって、オペレーティング システムの単一インスタンス上にあるコンテナでアプリケーションを実行できます。

コンテナ

Dockerの頭脳であるDocker Engineをサポートしているプラットフォームなら、どのタイプでも軽量のコンテナを実行することができます。Docker Engineは、データセンターに設置されたLinuxベースのサーバはもちろん、Windowsベースのデスクトップやクラウド環境まで、ほぼすべての環境で実行可能です。同様にDockerコンテナも、インフラに関係なく実行できます。Dockerは、導入環境をほとんど問わずに実行できるので、アプリケーションの抽象化レベルが一段階アップし、分散アプリケーション環境を構築、提供、実現する、よりシンプルな方法として利用できます。このため組織の即応性が向上し、必要に応じて素早く簡単にアプリケーションを拡張できるようになり、製品化にかかる時間が短縮されます。

Docker Hub

Dockerのエコシステムを構成するもう1つの主要な要素がDocker Hubです。Docker HubはDockerのイメージを格納できる一元的なリポジトリで、格納したイメージは再利用したりDockerコミュニティで共有したりできます。Docker Hubには、Ubuntu、MongoDB、Javaなど、公式のDockerリポジトリが多数揃っています。こうしたリポジトリを使用すれば、Docker Hubから正式なイメージを引き出せるので、開発者は手軽にDockerの利用に乗り出せます。引き出したイメージにはニーズに合わせて手を加え、手を加えたイメージをアップロードしてDocker Hubに戻し、チームメイトやDockerコミュニティのメンバーが簡単にアクセスできるようにできます。

実際、多くの開発者が、1つまたは複数のコンテナ内に構築したデータベース環境やNoSQL環境を使用してパッケージ済みのWebサービスを構築し、組織内の他の開発チームや組織外のユーザが活用できるようにしています。Dockerの人気が高まれば、ソフトウェア ベンダーが各自の製品をコンテナという形で提供し始めることも考えられます。

Dockerの全機能をファイアウォールの内側に維持しなければならないユーザもいますが、Docker Hubにはそうしたユーザ向けのエンタープライズ バージョンもあります。

コンテナとは仮想マシンのようなもの?

ある意味そうとも言えます。Docker EngineはVMware ESXiのようなハイパーバイザーではありません。物理的なハードウェア上でも、ハイパーバイザー上の仮想マシン内でも、クラウド プラットフォームでも実行できます。仮想マシンにはそれぞれ固有の構成があり、その仮想マシン内で稼働するアプリケーションにとって必要なコンポーネント(オペレーティング システムなど)で構成されます。

大きな違いは、仮想マシンごとに専用のオペレーティング システムをインストールしなければならない点です。つまり、ライセンス、オペレーティング システム固有の構成、アーキテクチャによる違いといった面でコストが余計にかかる可能性がある、ということです。

Dockerコンテナは、1つ(または複数)のアプリケーションと、アプリケーションの実行に必要な共有リソース(バイナリ、ライブラリなど)で構成されます。アプリケーションのコンポーネントすべてが、1つのオペレーティング システムを基盤にした1つのコンテナ内で稼働するのです。それが、どれだけ効率的かを考えてみてください。

1つのコンテナにアプリケーションのコンポーネントがすべて収まっていれば、そのコンテナを論理的な構造物として機能させ、アプリケーションとワークロードを確実に分離することができます。このため、複数のアプリケーションが稼働するマルチテナント環境を実行しても、アプリケーション同士が影響し合うことを心配する必要がありません。

図1)仮想マシンとコンテナの比較

図1)仮想マシンとコンテナの比較

出典:ネットアップ、2015年

Dockerとクラウド

ハイブリッド クラウド、パブリック クラウド、プライベート クラウドのどれを実行するにしても、Dockerはお客様のクラウド戦略に的確に応える仕様になっています。Dockerは、Amazon Web Services(AWS)など、多くのハイパースケール クラウド プロバイダによってサポートされています。そのため、テスト用の新しい環境をものの数分で立ち上げることができるので、開発には打ってつけのソリューションです。Dockerコンテナは、ハイパースケール クラウド プロバイダの環境でもワークステーション上やデータセンター内にあるかのように稼働するので、AWSなどのサービスはDocker開発者にとってきわめて強力なツールとなるでしょう。

DevOpsをサポート

Dockerは運用チームにもメリットをもたらします。Dockerを使用すると、アプリケーション環境の実行場所が自社内でもクラウド内でも同じようにサポートされるので、動的なアプリケーションを簡単に管理することができます。

現在多くの組織が、製品化のプロセスを合理化しようと、DevOps 手法の導入に乗り出しています。Dockerは、自動化エンジンのAnsible を始め、強力な基本のDevOpsツールと連携します。このため、既存の開発プロセスや新規の開発プロセスを統合して、どこでも実行可能な高度に自動化されたインフラを提供することができます。

コミュニティでは、Dockerのエコシステムに対応したオーケストレーション ツールや導入ツールの開発をプロジェクトとして推進中です。またDocker, Inc.では、Machine、Swarm、Compose のビルドとオーケストレーション製品を開発し、クラスタリングと分散構成に対応しています。Dockerには活発なコミュニティがあり、そこではDockerの成功に向けてさまざまなツールが作成されています。上述の革新的なツールはそのほんの手始めにすぎません。

Docker向けストレージのプロビジョニング

Dockerコンテナを使用すると、管理しやすい環境でさまざまな種類のストレージを活用できます。Docker環境にストレージ サービスを提供する方法としては、主に以下の2通りが挙げられます。

  • Dockerコンテナ内にボリュームをプロビジョニングする:新しいボリュームを作成し、Dockerコンテナ内からマウントします。または、Docker Engineを実行しているホストのオペレーティング システムから、Dockerコンテナにボリュームをマウントします。
  • 新しいデータ ボリューム コンテナを作成する:通常は、非永続的Dockerコンテナに別のデータ ボリューム コンテナを組み合わせて使用します。たとえば、スケールアウト アプリケーションにデータ ボリューム コンテナを使用して永続的データを格納すれば、データを失うことなく、必要に応じて複数のDockerコンテナの規模を拡張したり縮小したりできます。

DockerとNetApp clustered Data ONTAP

以上の説明から、皆様はDockerがNetApp® clustered Data ONTAP®と同じように機能すると気付かれたのではないでしょうか。clustered Data ONTAPは、CPU、メモリ、ドライブなどで構成されるストレージ ハードウェアの抽象化レイヤとして機能します(ドライブがSATA、SAS、SSDのどれかは関係ありません)。Data ONTAP上ではStorage Virtual Machine(SVM)が稼働しますが、これは、DockerコンテナがDocker Engine上で稼働するのと同じです。SVMごとに専用のネームスペースを備えられるので、Docker同様、スケールアウト環境を容易にサポートできます。

Data Fabricでクラウドにまでメリットを拡大

ネットアップは現在、Data Fabricという手法でclustered Data ONTAPの抽象化機能をクラウドにまで拡大しています。使用するプラットフォームやクラウドの種類を問わないDockerのシンプルな管理機能は、ネットアップ テクノロジが提供するData Fabricに最適です。

データセンターにあるFASストレージを使ってDockerを実行すれば、その後は、NetApp Private Storage for Cloudソリューション(AWS、SoftLayer、Azure向けを提供中)やCloud ONTAP (AWS向けを提供中)を使用して環境全体をクラウドに移行できます。移行の際に構成や設定を変更する必要はありません。また、どのデータ管理機能も、場所を問わずに同じツールを使用して実行できます。

Dockerとclustered Data ONTAPを組み合わせた導入環境については、ホワイト ペーパー『NetApp and Docker Technology to Enhance and Accelerate Dev/Ops in Hybrid-Cloud Environments』で詳しく解説していますので、ご一読ください。

Docker「コンテナ」に移行するには

皆様は、「Dockerはどういった場合に使用すればよいのか」という疑問をお持ちかと思いますが、答えは、皆様のビジネス ニーズに応じて異なります。Dockerを使用すると、開発プロセスと導入プロセスがどちらも向上し、今よりも高品質のソフトウェアを短期間で提供できるようになります。アプリケーションの導入やアップグレードを機に、Dockerプラットフォームの採用に乗り出す組織が数多くみられます。

Dockerは環境がラップトップでもAWSでも、驚くほど簡単に導入できます。Dockerを支えるオープンソース コミュニティでは、豊富な情報が提供されています。DockerのWebサイトではシミュレーターでDockerを試用し、基本的な機能を確認することもできます。Ansible、Azure、AWS、OpenStackなどのインフラ コンポーネントと統合されていることからも、Dockerが急速に成長し、浸透していることがわかります。

Dockerのようなアプリケーションやサービスのコンテナ化は、一部の企業にとっては大きな変化です。ただし、この変化は多数の企業が経験していることなので、ご安心ください。開発チームがコードの実装とテストのために即応性の向上を求めている場合でも、運用チームが、開発環境、テスト環境、本番環境間で一貫性を確保したいと考えている場合でも、Dockerには十分参考になると思われるユースケースが用意されています。NetApp Data Fabricビジョンと見事に一致するこの革新的な新登場のテクノロジに、今こそ目を向けてみませんか。

Melissa Palmer Melissa Palmer
ネットアップ システム エンジニア

Melissa Palmerは、Docker、仮想化、クラウドなど、ホットな話題のテクノロジについて、定期的にブログを執筆しています。Melissaのブログ、「vMiss.net: Secret Diary of a VM Girl」は先日、vSphere-land.comによって2015年のbest new vBlogに選ばれました。詳細は、vMiss.net をご覧ください。

関連情報
関連情報
MicrosoftがDockerをサポート

2014年10月、MicrosoftとDockerは、Windows ServerのエコシステムにDockerのコミュニティを統合するという計画を発表しました。なぜこれが重要なのかご存知ですか?データセンターでもクラウドでもAzureでも、Windows Server上では多数のアプリケーションが稼働しています。また、最近行われたAzureクラウドインアボックスの発表により、Microsoftエコシステムの中でDockerへの関心が大きく高まりつつあります。

WindowsプラットフォームにDockerの機能を追加すると、どちらからも最大限の効果を得られます。開発者は、Windowsの設定管理とパッチ管理の機能をすべてそのまま使用しながら、即応性と再現性に優れた予測可能な高速コンテナを活用できます。既存のWindowsインフラでコンテナを使用できるという点は、Windowsに多額の資金を投じている企業の関心を引きつける上でも重要になるでしょう。Microsoftは、Dockerのホスト ターゲットと同じ機能セットをHyper-Vでもサポートしようと取り組んでいるところです。



Dockerに関する知識を広げるために

以下のリソースでは、Dockerについてさらに詳しい情報が得られます。ぜひご参照ください。

関連情報
 
Go further, faster TRUSTe
お問い合わせ   |   購入方法   |   フィードバック   |   採用情報  |   登録   |   プライバシーポリシー   |   © 2015 NetApp