DockerのMobyプロジェクトとは何ですか?

ビーイングオースティンITE、私はDockerConは地元持つ楽しんだ、と私は参加者が同様オースティンのDockerConを持つ楽しむだろうと期待してオースティンを訪問するガイドを共同で執筆しています。

DockerCon 2017の期間中、Mobyプロジェクトを含むいくつかの主要な発表が行われました。 

Mobyプロジェクトとは何ですか?これは、車輪の再発明をせずに特殊なコンテナシステムを組み立てるためのフレームワークです。

MobyプロジェクトはDockerにとって、FedoraはRed Hat EnterpriseLinuxにとってです。-Solomon Hykes、Docker CTO /創設者

Fedoraプロジェクトと同等のコンテナープロジェクトになることで、Dockerの構築方法が変化しています。

Red Hatは、RHELの混乱の初期に、プロジェクトを製品から描写するという点で優れた仕事をしました。彼らはFedoraをRHELから分割しました。Dockerは、このアプローチをコミュニティとの関わりを深める方法と見なしています。以前は、コミュニティと製品の境界はあいまいでした。人々は、プロジェクトと製品のどちらに貢献しているのかを必ずしも判断できませんでした。このmoby / mobyリポジトリとdocker / dockerリポジトリ間のコードの分離により、この違いが明確になります。

Mobyは、Dockerをモノリシックエンジンからツールキットに変換して、コンポーネントをさまざまな構成にアセンブルします。Mobyプロジェクトは、各コンポーネントの再利用を促進する必要があります。Dockerにはこの点で成功の歴史があり、作成者を超えた再利用で測定できます。

  • 彼らはOCI / runcをスピンアウトし、現在ではコンテナーランタイムとイメージフォーマットの確立された標準となっています。
  • 彼らはコンテナをスピンアウトし、現在ではすべての主要なクラウドベンダーとインストールベースの99%(世界中の数百万のノード)からの貢献により、コンテナランタイムの事実上の業界標準となっています。
  • Notaryは、業界で最も成熟したTUFの実装であり、セキュリティコミュニティのコラボレーションのハブになっています。
  • Dockerディストリビューションは、12の商用製品のオープンソース基盤です。

Dockerチームは、Dockerモノリスが細かく分割されると、これらの個々のコンポーネントがカスタムソリューションの構成要素になることを期待しています。以前はdocker / dockerに存在していましたが、モノリシックプロジェクトはmoby / mobyに移動されました。

プロジェクトについていくつかの混乱が生じた。Dockerチームは、会議の寄稿者とほとんどのメンテナにプロジェクトをうまく伝えました。しかし、コミュニティでよりカジュアルにやり取りする人々は、その目的と影響について驚き、不明確であり、さまざまな要素がどのように組み合わされているか、または新機能(LinuxKitなど)が何をするのかを理解していないことに不満を表明しました。

一言で言えば@mobyプロジェクト:内側と外側。pic.twitter.com/K8Rn9YYtVs

—ソロモン・ハイクス(@solomonstre)2017年4月22日

Mobyプロジェクトを使用すると、システムビルダーは同じツールの上に他のプロジェクトを作成できます。システムビルダーは、これらのアセンブリを小さなIoTデバイスで実行するか、GPUを備えた大規模なシステムで実行するかに応じて、異なる方法で実行したい場合があります。

コンポーネントを分解する作業はまだたくさんあります。ただし、目標は、Docker用の1つの大きなアップストリーム(Moby)を作成することです。Docker Inc.は、ツールがDockerよりもオープンであることを望んでいます。製品設計の決定は、コンセンサス主導のオープンソースプロジェクトと対立する場合があります。関心の分離があることで、DockerInc。はユーザーエクスペリエンスに関する意見をコミュニティやエンタープライズのDocker製品にまとめることができます。Mobyがプロジェクトです。Dockerは製品です。

Mobyプロジェクトは、次の4つのレイヤーで説明できます。

  1. ずっと上流のコンポーネント
  2. モービー
  3. Docker CE
  4. Docker EE
David Chung / Docker Inc.

プロジェクトをレイヤーに編成することで、プロジェクトと製品のどちらで機能するかを決定する必要がある場合に発生する自然なコンテンツを和らげる必要があります。製品としてのDockerは、ユーザーから通知された意見を追加します(ユーザーにとってより簡単になるように)。たとえば、containerdにはデフォルトのレジストリがありませんが、DockerにはデフォルトとしてDockerハブまたはDocker CLIがあり、Dockerサポートフォーラム/システムでプロジェクトの未解決の問題を簡単に検索できます。ユーザーは影響を受けません。ユーザーは引き続き同じ方法でDockerを操作します。

  • コンテナーでアプリケーションを実行する簡単な方法を探しているアプリケーション開発者は、DockerCEを検討するかもしれません。
  •  すぐに使用できる、商用サ​​ポートされているコンテナプラットフォームを探しているエンタープライズITは、DockerEEを検討する可能性があります。

これらのユーザーにとっては何も変わりません。コマンドラインは同じままです。Dockerは、エコシステムを活用して、より迅速にイノベーションを実現できるようになりました。

  •  Mobyプロジェクトのコンポーネントを活用しようとしているシステムビルダーは、Dockerに縛られることなく革新することができます。

プロジェクトガバナンス

Mobyプロジェクトはオープンであり、コミュニティが運営するプロジェクトになります。Docker Inc.は、このプロジェクトの個々のコンポーネントを必要に応じて他の統治機関に寄付するという一般的な傾向があります。Containerdは、CNCFに寄付されたため、Moby組織からスタンドアロンである必要があります。長期的な個々のプロジェクトは、最終的には移動して他のリポジトリに移動する必要があります。

MobyプロジェクトFAQ

  • Mobyが一枚岩を解体している今、Go以外の言語は組み込まれるのでしょうか?
    • LinuxKitの場合—OcamlとRustへの取り組みがあります。言語を変更するマスタープランはありません。
  • RESTはgRPCに置き換えられますか?
    • Docker Incは通常、Mobyプロジェクト間の内部通信をgRPCに移行しながら、RESTAPIを一定のファサードとして残したいと考えています。コンポーネントは言語を変更でき、他のコンポーネントに影響を与えることはありません(マイクロサービスが選択肢を提供するように)。エンジンにはHTTPREST APIがあり、すべての下位レベルのコンポーネントはgRPCを採用しています。Solomonは、標準インターフェースとしてgRPCを採用することを提案しています。利点には、より自動化されたツールが含まれます。
  • Docker CE(オープンソースプロジェクト)はどこにありますか?
    • TBD-Docker / CLIには、今のところクライアントライブラリとSDKがあります。Docker for XXXが多数あることを考えると、パッケージ化とビルドはエディション固有です。