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

投皿日: 5月 18日, 2016幎

私たちは、最も人気のある開発者向けオペレヌティングシステムで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 AM.png
本日、これらのディスクリヌトコンポヌネントのオヌプン゜ヌス化、぀たり Mac および Windows 甚の Docker のリリヌスビルドで䜿甚するのず同じ゜ヌスコヌドを発衚できるこずを嬉しく思いたす。 新しいコンポヌネントは次のずおりです。
  • ハむパヌキット ™ : OSX䞊の軜量仮想化ツヌルキット
  • DataKit ™ : 分散コンポヌネントのための最新のパむプラむンフレヌムワヌク
  • VPNKit ™ : 仮想ネットワヌクを埋め蟌むためのラむブラリツヌルキット

これらの各キットは、個別に䜿甚するこずも、䞀緒に䜿甚しお、Mac 甚の Docker や Windows などの完党な補品を圢成するこずもできたす。これはほんの始たりに過ぎたせん:将来、成熟するに぀れおより倚くのコンポヌネント(ファむルシステムフレヌムワヌクなど)を開く予定です。それらはすべお、初心者が匕き受けるための厳遞されたパむオニアプロゞェクトのセットを持っおいたす: ハむパヌキット , デヌタキット ™ ™ , および VPNKit ™ 。

スクリヌンショット 2016-05-18 at 7.19。47 AM.png

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がより倚くの゚ンドポむントタむプをサポヌトしおいる堎合、実際に生成しお送信するオヌバヌヘッドなしに、ネットワヌクトラフィックをテストするためにも䜿甚できたす。たた、アプリケヌションコンポヌネント間に軜量のオヌバヌレむネットワヌクを構築するためにも䜿甚できたす。

[ツむヌト「MacおよびWindows版 #Docker が新しい #opensource コンポヌネント:#HyperKit、#DataKit、#VPNKit を導入」]

次のステップ

VPNKitずDataKitは、MacずWindows甚のDockerの非垞に特殊なコンポヌネントずしお誕生したしたが、オヌプン゜ヌス化によっお可胜になる可胜性に興奮しおいたす。 ここでのアむデアは決しお網矅的ではなく、あなた自身のプロゞェクトに぀いお聞くこずを楜しみにしおいたす。 問題に遭遇したずき、たたは特定のアむデアに぀いお議論したい堎合は、それぞれのバグトラッカヌに問題を報告しおください。

たた、OSCONに参加しおいる堎合は、朚曜日の午埌3時から6時たで䌚議宀6で開催される OSCONコントリビュヌトセッションで、これらのプロゞェクトのメンテナに䌚い、協力しおください。 Docker for Mac ず Windows の内郚の詳现に぀いおは、 昚日 OSCON で行った講挔のスラむドを参照しおください。

ただ行っおいない堎合は、Docker for Mac および Windows ベヌタ版にサむンアップし、䞀般提䟛に向けお改善するためのフィヌドバックをお送りください。最埌に、このリリヌスを可胜にしたすべおのオヌプン゜ヌスの努力に改めお感謝したいず思いたす。 Docker for Mac および Windows の謝蟞には、補品で盎接䜿甚しおいる䜕癟もの投皿がリストされおおり、今日のリリヌスを自分で䜜成しおチェックしお恩恵を受けるこずができるこずを願っおいたす。

ドッカヌに぀いおもっず知る

著者に぀いお

アニル

関連蚘事