2014年9月11日

イマ旬キーワード

コンテナ仮想化

新しい仮想化ソフトであるDockerの登場は、Linuxコンテナの世界で大きな変換点になりました。仮想マシンの代替手段として使われるだけでなく、アプリケーションの可搬性を高め、開発・試験・配布のワークフローを革新するでしょう。

NTT DATA, Inc. 武田 健太郎

実用的で枯れた技術「コンテナ」

メインフレームや商用UNIXの世界では、コンテナ型仮想化技術は古くから使われていました。Solaris Containers, HP-UX Containersなど、アプリケーションの実行環境とワークロードを安全かつ低オーバーヘッドで分離することを目的としたこれらの技術は、ミッションクリティカル領域での事例も十分あり、20世紀の時代から使われている極めて実用的で枯れた技術でした。ところが、Linuxの世界でコンテナ技術は長らく脚光を浴びることがありませんでした。コンテナ技術不遇の時代、Linuxの世界で「実行環境とワークロードを安全に分離する」のは、ソフトウエアによるハードウエアのエミュレーション、すなわち、仮想マシンを動作させる仮想化技術が主たる役割を担ってきました。クラウドサービス、特にIaaSの実用化は世の中の仮想マシンの数を爆発的に増大させました。スモールスタートが可能、需要に応じて迅速にリソース量を変化させられる、低レイヤーの運用管理はクラウド事業者におまかせ、スケールメリットによる圧倒的低コスト……流行らないわけがありません。

"ご注文は仮想マシンでよろしかったでしょうか?"

そんな中、整備が遅れていたLinuxカーネルのコンテナ技術(namespaces, cgroups)が出揃い、さらに、それをフル活用したDocker参考1がリリースされてから、多くの人が気付きはじめました。当初やりたいことは、「実行環境とワークロードを安全に分離する」ことであり、「ハードウエアをエミュレーションする」ことは、その手段として最適だったのか?もっと軽量で取り扱いしやすい方法があったのではないか?と。

Dockerの持つ2つの意味

Linuxコンテナの世界でDockerの登場は大きな変換点になりました。Dockerは2つの意味を持つと筆者は考えています。

  1. 1.Linuxのコンテナ技術のコモディティ化

    Dockerは、Linuxカーネルのコンテナ技術を使うのを「ばかばかしいほど簡単にする([make it ridiculously easy参考2])」するソフトウエアです。モダンな管理体系コマンド、テンプレート(イメージ)の規定などにより、多くのLinux技術者がコンテナ技術に触れる機会を広げています。

  2. 2.コンテナ形式によるアプリの可搬性向上

    Dockerは、コンテナ技術の本分である「実行環境とワークロードの低オーバーヘッドな分離」だけに留まりません。Dockerのコンテナテンプレート(イメージ)の概念は、コンテナに封入されたアプリの可搬性を大幅に向上させる、というメリットがあります。Linuxの世界で使われているRPM注1やDeb形式注2のアプリの開発・試験・配布のワークフローが、Dockerコンテナ形式によるワークフローに置き換わっていき、「コンテナが主たる流通対象である」ととらえられるようになっていくでしょう。

これからどうなるのか

すでにサービスプロバイダーでは多くの事例がありますが、エンタープライズ領域での変化については、筆者は以下のように予測しています。

まず起こることは、多くのLinux技術者がDockerを使ったコンテナ技術に触れることにより、Linux on Linuxの仮想マシンの代替手段としてコンテナが使われるようになる、ということです。低オーバーヘッド、高集約、それにともなうコスト削減のメリットを享受するのがこの段階です。次に起こることは、アプリの可搬性の向上によるインフラロックイン回避に向けた動きです。アプリの可搬性が向上するということは、言い換えると「インフラ(クラウド)はどこでもいい」ことにつながり、コスト・性能などの非機能要件により都度、都合がいいインフラでアプリのワークロードをさばけば良いことになります。これにより、顧客の立場から見れば、データをどこに置くかのみを気にしておけばよい、逆にクラウド事業者の立場から見れば、顧客を囲い込む手段はデータを預けてもらう(データロックイン)しかない、という状況になっていくと予想されます。

Dockerの本格的な実用に向けて解決すべき課題は多くあります。例えば、オーケストレーション注3、サービスディスカバリー注4、エンタープライズ向けワークフローなどです。NTTデータではこれらの技術開発も進めており、お客さまに対するコンテナ技術による価値提供を実施していきます。

【図】

図:仮想化/コンテナイメージ

注釈

  • 注1、2RPMおよびDeb形式

    Linuxのプログラム群をまとめてインストールできるようにしてあるパッケージ形式のひとつ

  • 注3オーケストレーション

    依存関係があるサービス群からなるシステムの構築を自動化する仕組み

  • 注4サービスディスカバリー

    「どこか知らない場所で必要なサービスが動いている」というクラウドの文脈で、必要となるサービスを見つけだし、指定する仕組み

著者プロフィール

【写真】

NTT DATA, Inc. 武田 健太郎

オープンソースソフトウェアを活用したITインフラ技術を専門とする。特にOS・クラウド・ストレージといった技術分野での経験が豊富。近年はシリコンバレーエリアで技術の目利きを実施している。

イマ旬キーワード

お気軽に
お問い合わせ
ください

Dockerの持つ意味とこれから起こることに関するお問い合わせ

お問い合わせフォーム