HN 日本語サマリー

← 一覧へ戻る
Web開発

Dockerは常にマイクロVMを使用していた(2016年以降)

Docker has always used microVMs (well since 2016) (dave.recoil.org)

9 pointsby avsm1 コメント

要約

Docker Desktopは、2016年以降、最小限のLinuxカーネルと軽量なVMM(Virtual Machine Monitor)であるhyperkit(後にDocker VMM)を使用してマイクロVMを基盤としてきました。これにより、ルートレス実行、最小限のデバイスインターフェース、セキュアなネットワーク管理などが可能になりました。この技術は、現在のDocker DesktopおよびDocker Sandboxesの基盤となっています。

全文翻訳

Dockerは常にマイクロVMを使用していた(まあ、2016年以降は)「マイクロVM」について多くの話題がありますが、これはワークロードが、KVMやXenのようなハイパーバイザー上で、firecracker(re:Invent 2018で発表)のようなミニマルなVMM上で、最小限のLinuxカーネルで実行されるものです。マイクロVMは、従来のLinux Dockerコンテナと比較され、より安全だと考えられています。もし私が、Docker Desktopが常にマイクロVMを使用していたと言ったらどうでしょうか? 2015年当時私がDockerに入社した当時、最先端はDocker Toolboxでした。それは多くの機能を備えた素晴らしい製品であるVirtualBoxを使用していました。VirtualBoxは独自のGUIと独自のアップデートプロセスを持っており、Dockerにはそれ以上のものが必要でした。ライブラリVMM私たちは、Dockerがコンポーネントのバンドルではなく、MacやWindows上でネイティブアプリのように感じられることを望んでいました。Mirage Unikernelライブラリを使用して、「ライブラリVMM」を構築し始めました。これはDockerアプリケーションの内部に組み込むことができ、単一目的で、ミニマル、セキュア、かつ高速なVMMです。最初のバージョンはhyperkitと呼ばれ、最新のものはDocker VMMです。¹ VMカーネルとルートファイルシステムも最小限で、LinuxKitプロジェクトに基づいています。現在のバージョンはさらにスリム化され効率化されていますが、概念的には同じで、containerd/nerdboxに似ています。2016年のDocker for MacDocker for Mac(後にDocker Desktopに改名)では、以下のことが可能になりました:すべてのプラットフォームでルートレスで実行できること。「Linux内部でのルートレス」を必要としないこと。Linuxカーネル全体が信頼されていないため、LinuxのCVEであっても問題になりません。最小限のデバイス。ホスト/VMインターフェースを注意深く制限でき、理解と監査が容易になりました。VPNとネットワークポリシー。VPNとの相互運用が容易になり、後にレジストリアクセス管理のようなネットワークポリシーを適用するように拡張されました。そして現在(2026年)DockerのマイクロVM技術は、Docker DesktopとDocker Sandboxes(なぜマイクロVMなのか)の両方の基盤となっています。Docker Sandboxesを使用すると、お気に入りのコーディングエージェントを実行したり、厳格な分離とガバナンスを備えて安全に管理したりできます。DockerのマイクロVMが何ができるかを見るには、Docker Sandboxes(sbx)をインストールして `sbx run claude` を試してみてください。さらに読むこの技術の歴史についてさらに読むには、記事「A Decade of Docker Containers(Communications of the ACM)」を参照してください。脚注¹すべてをライブラリにしてスタティックなユニカーネルのようなプロセスにリンクすることを目指していましたが、技術的な理由から、VMごとに単一のホストプロセスを持つことが理にかなっています。↩