2015年7月11日土曜日

コンテナーの世界(3)-コンテナー戦争に終止符を!
               -Open Container Project-

少し遅れたがOpen Container Project(OCP)について述べようと思う。
このプロジェクトは6月22日、DockerCon 2015でローンチした。コンテナー戦争に終止符を打つためだ。これまでのDockerのプレゼンは我こそが実質的にデファクトであり、正統な技術だと言わんがばかりだった。しかし昨年末CoreOSがこの分野に参入、さらにDockerへの一部批判もあってややこしくなってきた。この状況を打開するために、Linux Foundationのガバナンスのもとで始まったのがOCPである。

=これまでの流れと解決すべき課題!=
現在のコンテナー技術はLinuxカーネルの仮想化機能を利用している。
本家、Linuxからはこの機能を使ったLinux Containers(LXC)が登場した。LXCの構造はシンプルだ。その分周りの機能が十分ではなく、Dockerはまさにこの分野を先取りして人気を得てきた。初期のDocker 0.9まではLXCをデフォルトとしてLinuxカーネルとインターフェースさせたが、その後、別なドライバーlibcontainerを開発して置き換えた関連記事)。昨年末になると軽量Linuxディストリビューションを開発するCoreOSが動き出した。CoreOSが初めに公開したRocketはプロトタイプのコンテナー実行環境(ランタイム)でDockerと完全に競合する。その後、Rocketはrktrock-it)と改称し、関連する仕様はApplication Container Specificationとして公開された。この仕様にはラインタイムやコンテナーのイメージフォーマットなど幾つかの要素が含まれている(後述)。こうしてCoreOSのrktがDockerに挑戦する構図となった。何故こうなったのか。それにはDockerに対する問題意識がある。セキュリティーの甘さやファイルの使い勝手、レジストリの不便さなどだ。Dockerが真のデファクトを目指すならこれらへの総合的な対応が必須となる。つまりプラットフォームとしての全体スケッチが重要だ。さらに言うなら、Dockerランタイムさえあれば、どこでも実行できるという彼らのコンセプトは頂けない。ベンダーロックインそのものだという批判のBoycott Dockerというサイトまで現れた。
=OCPの目的=
OCPは発足に際し、「この2年、コンテナーベースのソリューションへの興味と利用は急増している。殆どのITベンダーやクラウドプロバイダーはその対応を発表しており、さらに関連するスタートアップも増えている。 このような状況は好ましいことではあるが、課題も多い。取り分け、コンテナーのポータビリティー(携行性)には、そのフォーマットとランタイムの標準化が望まれている。つまり、特定のクライアントやオーケストレーションスタックに依存せず、商用ベンダーやプロジェクトにも拘束されることなく、さらにOSやCPUアーキテクチャーなどのハードウェア、そして個別クラウド仕様にも従属されない、よりフォーマルでオープンな業界標準への対応が必要となっている」と説明した。この趣旨に沿って、プロジェクトはOpenDaylightOpen Virtualization Allianceなどと同様、Linux Foudatonのコラボレーションプロジェクトのひとつとなった。スポンサーとなったのは、Apcera, AWS, Cisco, CoreOS, Docker, EMC, Fujitsu, Google, Goldman Sachs, HP, Huawei, IBM, Intel, Joyent, Pivotal, the Linux Foundation, Mesosphere, Microsoft, Rancher, Red Hat, VMWareなどだ。

=標準コンテナーの5つの原則=
計画の実行にあたって、Dockerからはイメージフォーマットとランタイムのコードなどが寄贈された。作業面ではCoreOSが技術的なリーダーシップをとる予定だ。最初の仕事は新仕様書を作成すること、現在、鋭意作業中である。この下敷きは勿論CoreOSのApplicationContainer Specificationで、①App Container Image(実行に必要なイメージファイルやメタデータの形式)、② App Container Image Discovery(イメージファイルの探し出しに必要なイメージ名と場所・署名・公開鍵の規定)、③App Container Pod-Pod(複数アプリコンテナーのグループ化規定)、④App Container Executor(Podの実行に関する規定)が含まれている。一方、作成中の新仕様書には、その前提となる「標準コンテナーの5つの要件(The 5 Principals of Standard Containers)」が定められている。

    ① Standard Operations(標準操作)
    ② Content-agnostic(コンテンツ非依存型)
    ③ Infrastructure-agnostic(インフラ非依存型)
    ④ Design for automation(自動化デザイン)
    ⑤ Industrial-grade delivery(業界標準の提供)

=これからどうなるか!=
コンテナー技術が注目されてたった2年。
Dockerが独走してきたが、この流れにデベロッパーやCoreOSが異論を唱え出した。コンテナー技術の周りでは、既に軽量OSの動きも顕在化したが、これらは全てLinuxの土俵上のことで、上手く回っている。Dockerがこれまでのようにあまり強調しすぎると、新たなOSの登場のように映る。しかし、現在はDockerも事情が呑み込めて、OCPに協力的だ。OCPの活動を通して、コンテナー仕様が標準化され、ベンダーが競い合って、安全で、使い易く、より高いリソース削減が出来る製品が開発されることが望まれている。そうすれば次なる時代が見えてくる。