データセンターやクラウドといったIT分野に身を置いているのであれば、コンテナという一般名称と、「Docker」というその具体的な製品名称を1年以上にわたって各所で見聞きしてきているはずだ。その話題性は、6月にリリースされたDockerのバージョン1.0でさらに高まっている。
こういった話題性の高まりは、企業が驚くべきペースでDockerを導入しているせいもある。筆者は7月に開催されたオープンソースカンファレンス「OSCON」に参加して、自社のサーバアプリを仮想マシン(VM)からコンテナに載せ替えている企業が数多くあるのを実感した。実際、Dockerのサービスおよびサポート担当バイスプレジデントのJames Turnbull氏は、同カンファレンスの場で筆者に対して、Dockerを試験的に導入していた最大手の銀行のうち3行が本番環境に移行したと語った。どのような技術であっても、バージョン1.0を本番で使用するという決断はその技術を相当信頼していなければできないことだ。ましてや、安全性を最優先に考える金融業界ではほとんど前例のない話と言える。
また、Dockerというオープンソース技術は、Red HatやCanonicalといった、Linux分野の大手企業からのみ支持を集めているわけではない。Microsoftをはじめとするプロプライエタリな企業もDockerへのサポートを表明している。
ではなぜ各社がコンテナやDockerを好んでいるのだろうか?Parallelsのサーバ仮想化担当の最高技術責任者(CTO)であり、Linuxカーネル開発のリーダーでもあるJames Bottomley氏は、「Hyper-V」や「KVM」「Xen」といったハイパーバイザ型の仮想マシンはすべて「仮想ハードウェアのエミュレーションに基づいている。これはつまり、システムに対する要求が大きなものになることを意味している」と筆者に語っている。
しかしコンテナの場合、OSはコンテナ間で共有することになる。このためシステムリソースという点から見るとハイパーバイザよりもずっと効率が高くなる。つまり、ハードウェアを仮想化するのではなく、単一のLinuxインスタンス上に複数のコンテナ群を配置するというわけだ。これによって、同氏の言葉を借りると「仮想マシンにつきものの、使い道のない99.9%の無駄な部分を省き、必要なアプリケーションを保持する小さくまとまったカプセルを作り出せるようになる」のである。
従って、Bottomley氏によると、完全に調整されたコンテナシステムであれば、同一のハードウェア上でXenやKVMのVMを使用する場合に比べると、数にして4〜6倍のサーバアプリケーションインスタンスを実行できるという。
素晴らしい話ではないだろうか。サーバへの投資を増やさずに、ずっと多くのアプリケーションを動作させられるようになるのだ。では、なぜ今までこういったものがなかったのだろうか?実際のところ、コンテナは新しい考え方ではない。このアイデアは昔からあったのである。
コンテナというアイデアの源流は、少なくとも2000年の「FreeBSD jail」というメカニズムにまで遡ることができる。Oracleの「Oracle Solaris」も「Oracle Solaris Zones」という同様のアイデアを実現している。ParallesやGoogle、DockerはOpenVZやLXC(Linux Containers)といったオープンソースプロジェクトと連携し、コンテナの安全かつ安定した動作を目指してきている。