今、仮想化の新たなタイプとして、コンテナーが注目を集めている。最も有力なのがLinux上で動作する「Docker」。従来のサーバー仮想化よりも軽量で、使いやすいインタフェースを備える。“Immutable Infrastructure”の構築にも利用される。コンテナー上で利用できるOSが固定されるものの、サーバー基盤の一つとして広まっていきそうだ。

 「Docker」は、サーバー機1台の上で、仮想的に複数のアプリケーション環境(コンテナー)を作るソフトだ。コンテナーを作成し、容易にサーバーに配布して実行できる。ハードウエアを再現するタイプの従来の仮想化ソフトよりも軽量で管理が容易な点から注目を集めている。

 開発は、米Docker社が進めている。2013年3月、初めてオープンソースとして公開された後、猛烈な勢いで開発が進み、1年足らずで米国で大ブームとなっている。2014年6月に発表されたRed Hat Enterprise Linux 7でDockerが利用可能になり、同月にはDocker自体もバージョン1.0がリリースされた。その後も2014年7月にバージョン1.1がリリースされるなど、活発な開発が継続している。

 Dockerは、Go言語で書かれている。ソースコードは開発者用サービス「GitHub」上で公開されている(https://github.com/dotcloud/docker)。開発はGitHub上でオープンに進められており、バグレポートや機能改善の要望もここから出せる。

 Dockerを支える中心的な技術が「コンテナー」だ。従来のサーバー仮想化が「ハードウエアレベルの仮想化」と呼ばれるのに対し、コンテナーは「OSレベルの仮想化」と呼ばれる。まず、この二つを対比しながら理解していこう(図1)。

図1●サーバー仮想化とDockerによるコンテナーの違い
図1●サーバー仮想化とDockerによるコンテナーの違い
[画像のクリックで拡大表示]