Docker 其实一直在用微虚拟机(好吧,从 2016 年开始)

Hacker News Top 新闻

摘要

作者(前 Docker 员工)回顾了 Docker 自 2016 年起在 Docker Desktop 中使用基于 hyperkit / LinuxKit 的微虚拟机架构的历史,并指出这项技术如今正是 Docker Sandboxes 运行 AI coding agent 的安全隔离基础。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/10/03 23:29

# Docker 一直都在使用 microVM 来源:https://dave.recoil.org/docker-has-always-used-microvms/ ## Docker 一直都在使用 microVM(嗯,从 2016 年起) 如今"microVM"这个概念被热议——工作负载运行在一个精简的 Linux 内核上,跑在像 [firecracker](https://github.com/firecracker-microvm/firecracker)([在 re:Invent 2018 上发布](https://brooker.co.za/blog/2025/09/18/firecracker.html))这样极简的 VMM 上,而 VMM 本身又运行在 KVM 或 Xen 等 hypervisor 之上。microVM 常被拿来与传统的 Linux Docker 容器对比,并被认为安全性更高。如果我告诉你,Docker Desktop 其实一直在使用 microVM,你会怎么想? "Always has been" 梗图:等等,Docker 在用 microVM?一直都在用(从 2016 年起) ## 回到 2015 年 Docker Toolbox logo 当我 2015 年加入 Docker 时,业界最先进的方案是 [Docker Toolbox](https://github.com/docker-archive/toolbox)。它基于 [VirtualBox](https://www.virtualbox.org/),VirtualBox 是一款功能非常丰富、非常优秀的产品。但 VirtualBox 有自己的图形界面和自己的更新流程——对我们做 Docker 来说,这些功能远超所需。 ## 一个库化的 VMM 我们希望 Docker 在 Mac 和 Windows 上能像原生应用一样运行,而不是一堆组件的拼凑。借助我们的 [Mirage Unikernel 库](https://mirage.io/),我们开始构建一个"库化 VMM":一种可以嵌入 Docker 应用内部的 VMM,单一用途、极简、安全且快速。第一个版本叫 [hyperkit](https://github.com/moby/hyperkit),最新的版本叫 [Docker VMM](https://www.docker.com/blog/docker-vmm-public-beta/)。¹ 虚拟机的内核和根文件系统同样十分精简,基于 [LinuxKit](https://github.com/linuxkit/linuxkit) 项目。当前版本是一个更加精简高效的变体,但在概念上是一样的,类似于 [containerd/nerdbox](https://github.com/containerd/nerdbox)。 ## 2016 年的 Docker for Mac 对于 Docker for Mac(后来更名为 Docker Desktop),这带来了以下能力: - **在所有平台上以 rootless 方式运行。** 无需实现"Linux 内部的 rootless":整个 Linux 内核都是不可信的,因此即使出现某个 [Linux CVE](https://lwn.net/Articles/1097401/) 也无关紧要。 - **极简的设备。** 我们可以精心限制宿主机与虚拟机之间的接口,使其易于理解和审计。 - **VPN 和网络策略。** 与 VPN 互操作非常容易,后续也可以很方便地扩展,施加网络策略,例如 [Registry Access Management](https://www.docker.com/blog/introducing-registry-access-management-for-docker-business/)。 CACM 2026 - A Decade of Docker Containers (https://cacm.acm.org/research/a-decade-of-docker-containers/) ## 而到了 2026 年 Docker 的 microVM 技术既是 Docker Desktop 的基础,也是 *Docker Sandboxes* 的基础(参见 [为什么选择 microVM](https://www.docker.com/blog/why-microvms-the-architecture-behind-docker-sandboxes/))。Docker Sandboxes 让你能够[安全地运行你喜欢的编码 agent 及配套工具](https://www.docker.com/blog/docker-sandboxes-run-claude-code-and-other-coding-agents-unsupervised-but-safely/),具备严格的隔离和治理能力。 想体验 Docker microVM 的能力,可以安装 [Docker Sandboxes(sbx)](https://docs.docker.com/ai/sandboxes/install/) 并尝试 `sbx run claude`。 ## 延伸阅读 想了解更多这项技术的历史,请阅读 [A Decade of Docker Containers](https://cacm.acm.org/research/a-decade-of-docker-containers/)(*Communications of the ACM*)一文。 ## 脚注 1 虽然我们的目标是把一切都做成库、链接进一个类似 unikernel 的静态进程中,但出于技术原因,每个虚拟机保留一个独立的宿主机进程是合理的。↩ (https://dave.recoil.org/docker-has-always-used-microvms/#fnref1)

相似文章

macOS 容器机器

Hacker News Top

Apple 发布了 'container',一个开源工具,让 macOS 用户可以创建并运行 Linux 容器作为轻量级虚拟机,针对 Apple 芯片进行了优化,并支持兼容 OCI 的镜像。