Docker 其实一直在用微虚拟机(好吧,从 2016 年开始)
摘要
作者(前 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)
相似文章
我们逆向工程了 Docker Sandbox 未文档化的 MicroVM API
一个团队逆向工程了 Docker Sandboxes 使用的未文档化的 MicroVM API,并构建了开源 Sandbox Agent SDK,用于在微虚拟机中编排 AI 编码代理,以实现安全的不可信代码执行。
Docker 沙盒 – 为 AI 智能体提供的一次性隔离沙盒环境
Docker Sandboxes 为 Claude Code、Gemini CLI 等 AI 编码智能体提供一次性、隔离的 microVM 环境,支持通过网络和文件系统控制实现安全的无人值守执行。
开源适用于 Docker 和 gVisor 沙箱的 MicroVM 运行时
Aerol AI 开源了一个与 Docker 和 gVisor 沙箱兼容的 MicroVM 运行时,其设置和启动速度比现有方案更快。
@1YES_yes1: 苹果终于对 Docker 动手了。 现在 AI Coding 火了之后,越来越多人开始在 Mac 本地跑容器,部署各种 Agent 后端。 但有一件事,很多人都忍很久了。 Docker Desktop 真的太重了。 启动慢,占资源高,风扇…
苹果在 GitHub 开源了官方容器工具 Container,使用 Swift 重写并针对 Apple Silicon 优化,比 Docker Desktop 更轻更快,支持直装和兼容 Docker 命令。
macOS 容器机器
Apple 发布了 'container',一个开源工具,让 macOS 用户可以创建并运行 Linux 容器作为轻量级虚拟机,针对 Apple 芯片进行了优化,并支持兼容 OCI 的镜像。