Uniform with Unikernel による Docker の改善: HyperKit、VPNKit および DataKit の紹介

私たちは、最も人気のある開発者向けオペレーティングシステムでDockerエクスペリエンスが可能な限りシームレスになるように、MacおよびWindowsアプリ用のネイティブDockerを構築するために懸命に取り組んできました。 Docker for Mac および Windows には、ストレージとネットワークをホストから Docker コンテナーに効率的にブリッジする Linux Docker コンテナーを起動するために必要なものがすべて含まれています。 これらはMacOS XとWindowsの両方で透過的に動作し、他のサードパーティソフトウェアを必要としません。

Solomon Hykes は本日 OSCON 2016 で基調講演を行い、共同オープンソース開発の消防ホースが Docker の歴史を通じて可能にしてきた 漸進的な革命について語ります。本日、私たちは既存のオープンソースへの貢献に加えて、MacおよびWindowsデスクトップアプリケーション用のDockerを強化するコアテクノロジーをオープンソース化しています。

Mac および Windows 用の Docker を構築するには、ハードウェア仮想化、組み込みオペレーティング システム、ユニカーネル テクノロジを統合する必要がありましたが、この魔法をエンド ユーザーに公開する必要はありません。 アプリケーションのボンネットの下を見て、このソースコードの一部が何をするのかを理解し、それに貢献する方法や独自のプロジェクトで使用する方法をよりよく理解しましょう。

Docker for Mac を実行すると、Docker Engine の最新の安定版リリースを含む単一の組み込み Linux インスタンスを実行するためだけに存在する軽量ハイパーバイザーが起動します。 ほとんどのハイパーバイザーとは異なり、付属の ハイパーバイザーフレームワーク(OSX 10.10以降で利用可能)を使用するため、特別な管理者権限は必要ありません。 Docker アプリケーションには、Linux と OSX/Windows セマンティクスの間でインテリジェントにマップされるホスト ネットワークおよびストレージ機能を Docker VM に提供するライブラリもバンドルされています。

スクリーンショット 2016-05-18 at 7.19. 午前27時。 パプアニューギニア
本日、これらのディスクリートコンポーネントのオープンソース化、つまり Mac および Windows 用の Docker のリリースビルドで使用するのと同じソースコードを発表できることを嬉しく思います。 新しいコンポーネントは次のとおりです。
  • ハイパーキット ™ : OSX上の軽量仮想化ツールキット
  • DataKit ™ : 分散コンポーネントのための最新のパイプラインフレームワーク
  • VPNKit ™ : 仮想ネットワークを埋め込むためのライブラリツールキット

これらの各キットは、個別に使用することも、一緒に使用して、Mac 用の Docker や Windows などの完全な製品を形成することもできます。これはほんの始まりに過ぎません:将来、成熟するにつれてより多くのコンポーネント(ファイルシステムフレームワークなど)を開く予定です。それらはすべて、初心者が引き受けるための厳選されたパイオニアプロジェクトのセットを持っています: ハイパーキット , データキット ™ ™ , および VPNKit ™

スクリーンショット 2016-05-18 at 7.19. 47午前。 パプアニューギニア

HyperKit

HyperKit は、MacOS X 10.10 以降でハイパー バイザーフレームワークが提供されているために可能な仮想化への軽量アプローチに基づいています。 HyperKit アプリケーションは、ハードウェア仮想化を利用して VM を実行できますが、昇格された特権や複雑な管理ツール スタックは必要ありません。

HyperKit は xHyve および bHyve プロジェクト上に構築されており、VPNKit や DataKit などの他のコンポーネントとのインターフェースを容易にする追加機能を備えています。HyperKit はライブラリとして広く構成されているため、ユニカーネルライブラリとリンクするのは簡単です。 例えば、OCaml で書かれた MirageOS QCow ライブラリを使用する永続的なブロックデバイスサポートを追加しました。

どのように貢献できますか?

貢献のための3つの素晴らしい分野があります:

  • より多くのゲストオペレーティングシステムの起動をサポートします。 Linuxは、現在サポートされている唯一の「ファーストクラス」オペレーティングシステムです。 FreeBSD は起動しますが、インストーラを実行する必要があるため、シームレスではありません。 Windows、OpenBSD、NetBSD を起動するための BIOS サポートを追加するためのパッチが存在しますが、 より多くのテストが必要です。
  • より高水準の言語バインディングのサポート。 HyperKit はライブラリとして構成されているため、通常の外国語関数インターフェイスを使用して高水準言語とインターフェイスできます。
  • ハイパーバイザー機能。 中断/再開、ライブ再配置、ハードウェア パフォーマンス カウンターのサポートなど、一部の従来のハイパーバイザー機能はサポートされていません。 これらは、HyperKitを軽量で埋め込みやすいものにするために、他のコードベースと同じライブラリスタイルで追加する必要があります。

私たちは、貢献がそれぞれの上流プロジェクトに提出できるように構成されていることを保証します。

他にどのように使用できますか?

特殊な仮想マシンや短期間の仮想マシンを起動する必要があるアプリケーションは、HyperKit とリンクすることでメリットを得ることができます。 これらは、Linuxなどの従来のオペレーティングシステム、またはHyperKitに移植された後の ユニカーネルプロジェクトの一部である可能性があります。

DataKit

DataKit は、git 互換のファイルシステムインターフェイスでプロセスを調整するためのツールキットです。 UNIXパイプラインの概念とPlan9 9Pプロトコルを再検討しますが、生のテキストではなくツリー構造のデータのストリームという現代的なひねりを加えています。 DataKit では、バージョン管理されたファイル システムと対話するシェル スクリプトのような単純なものを使用して、疎結合プロセス間の複雑なワークフローを定義できます。

DataKit は、データ フローに関するアプリケーション アーキテクチャを再考し、「すべてがバージョン管理されたファイルである」 git 時代に、Plan 9 の「すべてがファイルである」という知恵を復活させたものです。 私たちは Docker for Mac と Windows で DataKit と 9P を多用しているため、Go 用のモダンでパフォーマンスの高い 9P ライブラリである go-p9p もオープンソース化しています。

他にどのように使用できますか?

このリポジトリには、DataKit を使用して継続的インテグレーション システムを 50 行のシェル スクリプトで作成するサンプル プロジェクトがあります。 github.com/docker/datakit/tree/master/ci

README では、DataKit と GitHub の統合についても説明しています。 DataKit は、データに関するプロセスを調整する必要があるあらゆる状況で使用でき、バージョン対応登録されたデータに関する場合に威力を発揮します。

どのように貢献できますか?

DataKit での GitHub PR サポートはまだ非常に基本的なものであり、これは追加のコントリビューションを使用できる領域です。 DataKit は、プロジェクトでの使用方法を共有するなど、非常に幅広いユース ケースに使用できます。

VPNKit

VPNKit は、生のイーサネットネットワークトラフィックと、MacOS X または Windows での同等のソケット呼び出しとの間で変換を行うネットワークライブラリです。 これは MirageOS TCP/IP ユニカーネルスタックに基づいており、OCaml で書かれたライブラリである。 VPNKこれは、ユーザー空間でネットワークプロトコルをきめ細かく制御する必要がある場合に便利であり、高級言語で拡張できるという追加の利便性があります。

どのように貢献できますか?

VPNKit は、Docker for Mac または Windows を通過するすべてのコンテナ トラフィックのインターセプト ポイントを提供します。 パケットのキャプチャとインスペクション、特定のトラフィックパターンをフィルタリングするプロトコルプロキシ、またはWebアプリケーションをデバッグするためのHTTPプロトコルの視覚化のサポートにより拡張できます。

他にどのように使用できますか?

VPNKitがより多くのエンドポイントタイプをサポートしている場合、実際に生成して送信するオーバーヘッドなしに、ネットワークトラフィックをテストするためにも使用できます。また、アプリケーションコンポーネント間に軽量のオーバーレイネットワークを構築するためにも使用できます。

次のステップ

VPNKitとDataKitは、MacとWindows用のDockerの非常に特殊なコンポーネントとして誕生しましたが、オープンソース化によって可能になる可能性に興奮しています。 ここでのアイデアは決して網羅的ではなく、あなた自身のプロジェクトについて聞くことを楽しみにしています。 問題に遭遇したとき、または特定のアイデアについて議論したい場合は、それぞれのバグトラッカーに問題を報告してください。

また、OSCONに参加している場合は、木曜日の午後3時から6時まで会議室6で開催される OSCONコントリビュートセッションで、これらのプロジェクトのメンテナに会い、協力してください。 Docker for Mac と Windows の内部の詳細については、 昨日 OSCON で行った講演のスライドを参照してください。

まだ行っていない場合は、Docker for Mac および Windows ベータ版にサインアップし、一般提供に向けて改善するためのフィードバックをお送りください。最後に、このリリースを可能にしたすべてのオープンソースの努力に改めて感謝したいと思います。 Docker for Mac および Windows の謝辞には、製品で直接使用している何百もの投稿がリストされており、今日のリリースを自分で作成してチェックして恩恵を受けることができることを願っています。

[getanews color="F3E5D9" h1="Docker for Mac and Windows Beta" newsletter="" btn="yes" btn_text="ベータ版にサインアップ!" btn_url="https://beta.docker.com" btn_target="_blank" ]アプリケーションの構築、組み立て、出荷のための統合された展開しやすい環境。[/getanews]


ドッカーについてもっと知る

フィードバック

「ユニカーネルによるDockerの改善:HyperKit、VPNKit、DataKitの導入」に関する0の考え