BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Rocket: CoreOSの新コンテナランタイム

Rocket: CoreOSの新コンテナランタイム

原文(投稿日:2014/12/04)へのリンク

CoreOSが新しく,Rocketコンテナランタイムのプロトタイプバージョンをリリースした。Dockerプロセスモデルとプロジェクト方針に対する意見の相違から開発された,Dockerランタイムの代わりとなるものだ。

CoreOSは,従来のコンテナからクラウドサーバへのローンチに機能を拡張しようとするDockerに同意していない。そのためにDockerの問題点を修正して,構成機能とセキュリティ,速度を重視したRocketを開発することで,標準となるシンプルなコンテナを作り出そうとしているのだ。

Dockerをフォークしなかったのは,すべての機能を中央のデーモンを通じて実行するというDockerのプロセスモデルには欠陥がある,という主張に基づく同社の判断だ。Rocketでは,Dockerとはいくつかの面で異なったものを開発しようとしている。

  • 構成: コンテナのダウンロードやインストール,実行を行うツールは,独立的かつ構成可能なものでなければならない。
  • セキュリティ: アイソレーションはイメージの監査やアプリケーションIDとともに,プラグイン可能であるべきだ。
  • イメージ配信: イメージの検索は連携的かつ分散的でなければならない。BitTorrentなどのプロトコルがプラグイン可能であること,あるいはレジストリを必要としないプライベートな展開が可能であることも必要だ。
  • オープン: ツールの実装からの独立性を維持するために,フォーマットとランタイムはコミュニティ内で広く選択,開発されたものでなければならない。

Rocketは,App Container仕様を実装した,rktという単一のコマンドラインツールである。App Container仕様は,CoreOSが開発したオープンでポータブルなコンテナフォーマットで,次のものから構成されている。

  • App Container Image (ACI): コンテナの実行に必要なすべてのコードを含み,署名,およびオプションとして暗号化されたtgzファイル。暗号化することにより,BitTorrentや共有オブジェクトストレージ,あるいはミラーネットワーク経由での配布が可能になる。
  • App Containerランタイム: コンテナの動作環境。デバイスや環境変数,権限,コンテナ外部から環境にデータを公開するためのメタデータサービスインターフェース定義などを含む。
  • App Containerディスカバリ: イメージの検索とダウンロードのための連携プロトコル。インポートパスは,golangのバニティ(vanity)URL手法の影響を受けている。coreos.com/etcdのような名前でイメージを参照することにより,レジストリを稼働させずに連携的なダウンロードが可能になる。

発表に対する反応はすぐにあった。DockerのCEOであるBen Golub氏は,同社の主張の一部には同意せず,今回の発表のレトリックとタイミングを疑問視している(DockerCon Europeが今週開催される予定)。

差し当たっては,これはすべて,健全なオープンソースプロセスのプロセスの範疇であることを強く述べたいと思います。アイデアやプロダクトのオープンな競争は歓迎に値するものです。[...] 主張のいくつかには同意できかねる部分がありますし,Rocketの発表に関するレトリックとタイミングに疑問もありますが,私たちとしては,今後もユーザと開発者にとって何がベストであるかを指標として,すべての活動を継続できればと思っています。

氏は,700を越えるコントリビュータの存在,その95%が企業としてのDocker社員以外であること,65,000の無償Dockerイメージなど,Dockerを取り巻くエコシステムとオープンガバナンスを強調する。同社は現在でも,ネットワークやスケジューリング,構成,クラスタリングなどのオーケストレーションサービスをカバーする上で,マルチコンテナアーキテクチャの拡張がDocker開発のキーであると考えている。これらのオーケストレーション機能は,オープンに開発されて,オープンAPIとして提供されるべきものだ。さらには,モノシリックな構造でなく,実行エンジン(libcontainer, LXC)やファイルシステム(BTRFS, デバイスマッパ, AUFS, XFS)で既に実現されているのと同じ方法で,ポータビリティを犠牲にすることなく,プラグインによるサービスのスイッチを可能にする必要がある。

Dockerの開発者で同社CTOのSolomon Hykes氏も同じように,Rocketに対してコメントを発表している。氏はLXDやRocket, nspawnのような競合ツールの存在を歓迎しながらも,その発表についてはさらに批判的である。

この記事での行動や言語,それに対するプレスキャンペーンを私がどう受け止めたか,という点については,“失望”という言葉でも十分ではありません。ケンカを売るつもりならば,受けて立つまでです!中傷からは何も生まれません。最後には裏目に出るでしょう。

氏は,Dockerが投資家の主張によって方向性を変えた,あるいはプロジェクトの方向性が企業としてのDockerの独断で決められている,といった主張を否定した上で,CoreOSのRocket発表での技術的な懸念のいくつかに対処した

Dockerがプラットフォームを構築しているという事実は,必ずしもコマンドラインツールとしての‘docker’が肥大化し,モノシリックになるという意味ではありません。まったく逆です!Dockerの大きなテーマは,実際には正反対なのです。モジュール性を向上して,個々のパーツを独立して簡単に使用できるようにすることです。事実として,CoreOSのブログ記事で言及されていた,まさにその機能(マシン管理,クラスタリング)が,実際には,Dockerバイナリに組み込まれない予定なのです。

その一方で,Cloud Foundry PaaSサービスでDockerを使用しているPivotalは,App Containerへの対応に投資することをすでに発表している

CoreOSの仕様と技術的アプローチは,数千に及ぶコンテナを実際環境で運用するという,当社の観点およびプロセス管理ニーズに合致しています。[...] Pivotalはオープンなコンテナ仕様を支持し,CoreOSの仕様を広くレビューし,改良を加えるように,業界全体に対して求めていきます。

今回の発表とは別にCoreOSは,今後もオペレーティングシステムに完全に統合した形で,Dockerの提供を続けていく。また,同社の創立者のひとりでCTOであるBrandon Philips氏が現在務めてしている,Docker執行理事の職務も引き続き行う予定である。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT