先日オースチンで開催されたDockerConイベントにおいて、Docker Incが、MobyとLinuxKitという、2つの重要なオープンソースプロジェクトを発表した。Mobyでは事実上、それまでのdocker/docker GitHubリポジトリからmoby/mobyへと、Dockerがオープンソースプロジェクトを企業としてのDockerから分離したことを示している。一方のLinuxKitは、‘ランタイムプラットフォームに必要なコンポーネントのみを含む、独自のLinuxサブシステム’を構築するための、一連のツールを提供するものだ。
RancherのDarren Shepherd氏は自身のツィートで、Mobyの目的を次のようにまとめている。
Mobyの件は驚きましたか?とにかく、@dockerのユーザには何も変わっていません。@Rancher_Labsと同じで、システム開発者を支援する内部プロジェクトの変更なのです。
DockerのCTOであるSolomon Hykes氏がこれに補足して、次のように説明する。
Mobyは、独自のコンテナベースシステムを開発したいシステムビルダのために設計されています。Dockerあるいは他のコンテナプラットフォームを利用可能なアプリケーション開発者向けではありません。Mobyプロジェクトの参加者は、Dockerから派生したコンポーネントのライブラリを選択したり、‘独自のコンポーネント’(BYOC)をコンテナとしてパッケージしたり、さらにはそれらすべてを組み合わることで、独自のコンテナシステムを開発することができます。
Mobyプロジェクトがいつ終了してDockerになるのかという点で、特に‘docker’コマンドラインツールに関して、当初は一部で混乱があった。それについてHykes氏は、Twitter上で次のように述べている。
MobyはDockerそのもの(あるいは、そのようなもの)を開発するプロジェクトです。
さらに、
ユーザには影響ありません。Dockerのバイナリは変わらないのです。
最終的には何人かのメンテナが集まり、Mobyプロジェクトのホームページに‘Moby and Docker’という文章を追加して、詳細な説明を行なった。Hykes氏はその後、Mobyプロジェクトのアーキテクチャと、Alvaro Miranda氏の整理したアップストリームおよびダウンストリームコンポーネントとの関連を、手書きのスケッチに描いている。
LinuxKitのローンチに関する記事は、Docker Incのケンブリッジ英国オフィスに所属するソフトウェアエンジニアのJustin Comack氏が発表した。同オフィスは、Docker IncがUnikernel Systemsを買収したものだ。
LinuxKitには、ランタイムプラットフォームに必要なコンポーネントだけを含む、独自のLinuxサブシステムを開発するためのツーリングが含まれています。システムサービスはすべて交換可能なコンテナで、不要なものはすべて削除することができます。
従ってLinuxKitは、コンテナの内部にはあまり関与していない。GoLangの‘FROM SCRATCH’パターンやAlpine Linux、あるいはその他のディストリビューションの選択という点については、サイズやセキュリティ上の対象領域、ツールへの習熟度などによるユーザ自身の要求に任せられている。これに合わせて、Dockerはマルチステージビルドを発表した。このビルドでは、ビルド段階で使用したツールを、バイナリ生成後に取り除くことのできるコンテナの構築が可能になる。LinuxKit自体はコンテナの外側を重視しており、特定のデプロイメントプラットフォームに合わせて調整可能な、最小のランタイム環境を構築する手段を提供する。コンセプト的にはunikernelと多くを共有しているが、中核となるのが特殊目的のバイナリではなく、あくまでもLinuxカーネルである点が大きな違いだ。必要十分なオペレーティングシステム(Just enough operating system/JeOS)はクラウドコンピューティング初期からのコンセプトであり、rPathなどの企業が最小システムイメージ用のツールを提供してきた。LinuxKitは、コンテナの普及を活用してこのアプローチを現代的なものにすることで、依存性管理に関わる問題を簡略化するものだ。
いずれの発表も、Docker Incが立ち上げたコンテナエコシステム内における、Docker Inc自身の役割に関わるものであり、既存のユーザエクスペリエンスにはほとんど影響しない。Mobyでは、オープンソースプロジェクトとしてのDockerと、企業としてのDockerの間に明確な距離を設けているが、同時にモジュラリティの向上も実現している。Dockerを実行する新たな方法をもたらすLinuxKitは、CoreOSなどのコンテナ用に最適化されたLinuxディストリビューションとある面で競合するものだ。しかしLinuxKitは、コンテナを実行するOSと、OS上で動作するコンテナという分離した2つの対象を、一貫性を持ってデプロイ可能なアーティファクトに統一する作業に着手したという意味において、より広い視野に立っている。
この記事を評価
- 編集者評
- 編集長アクション