今や飛ぶ鳥を落とす勢いのDockerだ が、その技術を遡れば、IBMメインフレームのパーティションに始まる。ひとつのOSの上にパーティションを区切るこの方法は、Unix時代に適用構想が 持ち上がった。そしてUnix SystemⅤ Release 4(SVR4)とSun OSが統合されてSolarisとなり、2005年、Solaris 10でSolaris Containersが実装された。その後Linuxが登場、2008年、Linux 2.6.24でLXC(Linux Containers)として引き継がれ、2014年にはDocker 1.0 が登場した。
=コンテナーとは何か、そしてDocker!=
今さらながら、コンテナーとは何か整理してみようと思う。
◆ Parallels Virtuozzo Containers


◆ Sun Solaris Containers


◆ Linux Containers(LXC)


以上見てきたように、VirtuozzoやSoralis Container、LXCのコンテナー技術は同一OSをシェアする。それ故、個々のコンテナー内で使用するファイルやネットワーク、CPUなどのリソース割り当てには工夫がいる。Virtuozzoでは各リソース毎のクォート管理機能を整備し、前述のVZFSは複数コンテナー間のファイルシェアリング機能も持つ。Solaris Containerでは各ゾーン(コンテナー)が独立したOS環境を保持するための工夫が施され、ホスト名やIPアドレスなどを持つ仮想ネットワーク環境の整備、ファイルはGlobal Zone内に各Non Global Zoneの専用ディレクトリーが作られる。勿論、各ゾーン内でZFS(Zettabyte File System)の利用も可能だ。
◆ そしてDocker!
LXCの構造はシンプルだ。ただその周りに十分な機能が揃っているわけではない。
Linuxだから勿論cgroupを使ったリソース制御は出来る。問題はどれほど容易かだ。Dockerの生い立ちはPaaSのdotCloudの内部プロジェクトとして始まった。そして2013年7月に独立。同年(2013年)3月リリースされたオープンソースの初期版ではLinuxカーネルの仮想化機能を利用する方法として、LXCがデフォルトとなり、他にLibvirtなど幾つかの方法があった。しかし0.9版になるとLXCがドロップし、代わって独自のドライバーのlibcontainerが標準となった(右下図参照)。
2014年6月、Docker 1.0が発表されると、Docker自身がコンテナー技術のプラットフォーム(Docker Engine)化を目指し始めた。発表されたDocker Engineはクライアント/サーバー構成となり、各コンテナーを管理するのがDocker Servier、そのサーバーを操作するのはDocker Cliant。そして、このクライアントはRESTful APIによって多様なプログラムと連携が出来る。最新版は先月16日にリリースされたDocker 1.6だ。この版では先にリリースした分散環境向けのツール群が一部更新されて、Compose 1.2 (マルチコンテナのオーケストレーションツール)、Swarm 0.2(コンテナーのクラスタリングツール)、Machine 0.2(クラウドやローカルマシンなどのプロビジョニング)、さらにコンテナー間認証アクセスはRegistry 2.0となった。
=ワゴンに飛び乗れ!=
今日、LinuxやWindowsの世界では仮想化技術がいやというほど普及して、汎用的に使われているが、それなりのオーバヘッドがある。ここが悩みだ。一方、コンテナー技術は同一OSのシェアなどの制限はあるがオーバーヘッドは大きく軽減される。コンテナーで先行していたParallelsが従来からWeb Hostingなどの業者に持てはやされたのは、こうした理由からである。そしてDocker人気がやってきた。考えてみればLinuxがこれだけ普及しているのだから、Linuxコンテナーが人気になるのは当り前である。元祖Linuxコンテナーの公式サイトLinuxContainers.orgにはLinuxカーネルのコンテナーインターフェースとなるLXC、その上に構築されるユーザエクスペリエンスLXD、さらにリソース管理のCGManagerやファイル管理のLXCFSが揃いつつある。しかしながらその歩みはのろい。その間隙を突いたのがDockerだ。Dockerには独自技術はなく、オープンソースによるエコシステムと使い勝手の良さがウリである。だからこそ、このバンドワゴンに AmazonもMicrosoftも、GoogleやVMwareも飛び乗るのだろう。
LXCの構造はシンプルだ。ただその周りに十分な機能が揃っているわけではない。


=ワゴンに飛び乗れ!=
今日、LinuxやWindowsの世界では仮想化技術がいやというほど普及して、汎用的に使われているが、それなりのオーバヘッドがある。ここが悩みだ。一方、コンテナー技術は同一OSのシェアなどの制限はあるがオーバーヘッドは大きく軽減される。コンテナーで先行していたParallelsが従来からWeb Hostingなどの業者に持てはやされたのは、こうした理由からである。そしてDocker人気がやってきた。考えてみればLinuxがこれだけ普及しているのだから、Linuxコンテナーが人気になるのは当り前である。元祖Linuxコンテナーの公式サイトLinuxContainers.orgにはLinuxカーネルのコンテナーインターフェースとなるLXC、その上に構築されるユーザエクスペリエンスLXD、さらにリソース管理のCGManagerやファイル管理のLXCFSが揃いつつある。しかしながらその歩みはのろい。その間隙を突いたのがDockerだ。Dockerには独自技術はなく、オープンソースによるエコシステムと使い勝手の良さがウリである。だからこそ、このバンドワゴンに AmazonもMicrosoftも、GoogleやVMwareも飛び乗るのだろう。