Dockerのコンテナは、このところもっともホットな技術であり、きわめて大規模なサーバ展開のためのLinuxベースのオペレーティングシステムCoreOSも、その中心的な技術として利用するだけでなく、Dockerのプロジェクトに積極的に貢献してきた。しかし同社は今日(米国時間12/1)、Dockerの基本的な方向性には同意できないので独自のコンテナランタイムを今作っている、と発表した。
CoreOSのCEO Alex Polviは、今日の発表声明の中でこう述べている: “Dockerはわれわれみんなが同意できるシンプルなユニットなっていく、と考えていた。しかし今のDockerは、シンプルで再利用可能なコンポーネントではないものになりつつある。今のDockerは、クラウドサーバやクラスタシステムを構築するためのツールとして、多様な機能を持ちつつある…イメージの構築、イメージの実行、アップロード、ダウンロード、そして最終的にはオーバレイネットワーキングまでも。そしてこれらがすべて単一のモノリシック(一枚岩的)なバイナリへとコンパイルされ、主としてサーバ上のrootとして動いている”。
Polviによると、初期のDockerは標準的なコンテナアーキテクチャを目指していて、それによってデベロッパ(やCoreOSのような企業)の効率や生産性に貢献するものと思われた。しかしその後、とくに巨額な資金を調達してから以降のDockerのミッションは大風呂敷になり、Dockerのエコシステムに属する企業がすでに作っているようなツールも作り始めた。Polviは曰く、“Dockerはもはや単なるコンテナではなく、Dockerという名のプラットホームになってしまった。彼らはもはや、われわれが期待していた、シンプルで自由な組み合わせのできるビルディングブロックを目指していない”。
そこで今CoreOSは、同社が”アプリケーションコンテナと呼ぶコマンドラインツールRocketを使って、そのようなビルディングブロックを作ろうとしている。そのコンテナの詳細仕様はまだ流動的なようだが、これをめぐる議論の現状はここで一望できる。
Rocketの基本的な機能はDockerと同じだから、ではなぜCoreOSは単純にDockerをフォークしなかったのか? オープンソースだから、やろうと思えばできたはず。でもPolviに言わせると、それをするとDockerの“基本的に欠陥のある”プロセスモデルを使わなければならない。もっと良いプロセスモデルを実装するためにはDocker全体をリライトしなければならないから、むしろ新たにゼロから作った方が容易だし、またコンテナというものをフレッシュな視点で見直すこともできる。
…という次第だけれども、CoreOSは今後もDockerのサポートを続ける。Rocketの最初のバージョンは、GitHubで入手できる。
[原文へ]
(翻訳:iwatani(a.k.a. hiwa))