用Rust从零做Docker Desktop替代:ArcBox想解决什么问题
用 Rust 从零做一个 Docker Desktop 替代品:ArcBox 想解决什么问题
如果你在 Mac 上跑过 Docker,应该记得它占用多少系统资源、启动有多慢。OrbStack 靠 Rust 重写把这个问题改善了不少,但它是闭源的。ArcBox 的思路是:干脆全部开源,用 Rust 从头写一个,在容器、Linux 虚拟机和 AI Agent 沙盒三个场景里同时替代 Docker Desktop。
它是什么
ArcBox(arcboxlabs/arcbox,3,371 Stars,109 Forks,Apache-2.0 许可证)是一个用 Rust 从零构建的容器和微虚拟机运行时。官网 arcbox.dev,目前支持 macOS(Apple Silicon 优先)和 Linux,Windows 还在路线图上。
它把自己定位为四层统一平台:
- 容器(Containers):Drop-in Docker 引擎替代,暴露标准 Docker 兼容 socket,Docker CLI、Compose、BuildKit 直接可用,零改动迁移。
- 沙盒(Sandboxes):基于 Firecracker 的隔离微虚拟机,每个沙盒有独立内核、文件系统、网络栈,专为 AI Agent 和不可信代码设计。<100ms 启动,包含完整 gRPC API 可被外部工具驱动。
- Linux 机器:完整虚拟机,有自己的内核、持久磁盘、可自定义网络,可同时跑 Ubuntu、Alpine 等多发行版。
- macOS 客户机:在 Apple Silicon Mac 上通过 Virtualization.framework 跑 macOS 虚拟机,适合需要 macOS 环境的 CI/CD 场景。
核心架构:VirtIO + Firecracker + NFSv4
ArcBox 不用现成的虚拟化库走全套自己造轮子。自研了两套 Hypervisor 后端:Intel VT/AMD-V 用 Hypervisor.framework,Apple Silicon 用 Virtio-macOS。VirtIO 设备驱动覆盖网络、块设备、文件系统、控制台、vsock 和 balloon 内存。
文件共享走 NFSv4 协议,通过 vsock 传输,客户的 Dockerfile 不需要改动,容器数据直接在 Finder 里可见。
在性能对比上,官方测出这样的数字(与 OrbStack 相比):
| 指标 | ArcBox | OrbStack |
|---|---|---|
| 单流网络吞吐 | 22.7 Gbps | ~7.5 Gbps |
| 多流网络(16 flows) | >50 Gbps | ~45 Gbps |
| Cold boot(alpine) | <1.5s | ~2s |
| Idle 内存 | <150 MB | ~200 MB |
| 文件 I/O(vs 原生) | >90% | 75–95% |
这组数字的来源是 ArcBox 官方文档 net-perf-limits.md,是经过 SIMD 加速校验和、多流 RX 合并窗口自适调优之后的结果。
最近的更新:v0.7.0 的破坏性变更
项目迭代非常快,最近 3 个 Release(v0.7.0 / v0.6.9 / v0.6.8)分别在 8 月 15、14、14 日发布,节奏几乎是每天一个补丁版本。
v0.7.0(发布说明,2026-08-15)有一个值得注意的破坏性变更:MachineService.Start 的返回时机改了——之前是在 Agent 首次响应时返回,现在改为等待虚拟机完全就绪(网络初始化完成)。这个变化让 alpine 镜像的启动从 ~0.5s 变成 ~2.2s,Ubuntu systemd 镜像从 ~0.5s 变成 ~14s。如果你对 Start 设置了超时,需要同步调整到 15s 以上。
同版本还修了两个值得关注的问题:容器网络在静默客户机(20 分钟无流量)后不再 break,vsock 内联快速路径现在会从发送端重传而不是死等。
适合谁用
本地开发跑 Docker 的 Mac 用户迁移成本最低:一条 brew install 加 abctl docker enable 就能把现有 workflow 搬过来,Dockerfile 不需要改。但要注意这只是替换引擎,Docker CLI 本身还是 Docker 官方的。
AI Agent 开发者是另一个主要受众。通过 abctl claude 把 Claude Code 装进一个 Firecracker 微虚拟机里运行,虚拟机和主机之间只有 vsock 通信, Agent 执行不可信代码时的隔离边界是内核级别而非容器级别。这个场景下启动时间 <100ms 的优势比较明显。
安全研究或需要跑未审查代码的团队,可以用 abctl sandbox create 从模板或 Dockerfile 构建一次性隔离环境,abctl sandbox run <id> 启动,abctl sandbox cp <id>:/tmp/out.tar.gz . 把生成物拿出来,整个过程不触碰主机文件系统。
不适合谁
目前沙盒功能需要 Apple Silicon M3 或更新型号 + macOS 15+ 才能运行(OrbStack/Tart/Lima 的通用 x86 翻译在沙盒场景不可用),Intel Mac 用户暂时无法使用沙盒功能。
本地虚拟化经验不足的团队,迁移 ArcBox 后的调试链路会比 Docker 复杂一些,尤其是涉及网络排障时。官方文档在 arcbox.link/docs 有覆盖,但示例还不够丰富。
下一步怎么试
如果你用 Apple Silicon Mac,最简单的切入方式是安装桌面客户端,把 Docker Desktop 换掉:
brew install --casks arcbox
abctl daemon start
abctl docker enable
docker run -d -p 8080:80 nginx
curl http://localhost:8080
想试沙盒,先确保系统版本达标,然后:
export ANTHROPIC_API_KEY=sk-...
abctl sandbox create --from-image myagent:latest --memory 512 --ttl 3600
abctl sandbox run <id> -- ./run.sh
项目目前在公共 Beta 阶段,可以在 Discord 或 GitHub Issues 参与反馈。
相关链接
- GitHub:arcboxlabs/arcbox
- 官网:arcbox.dev
- 文档:arcbox.link/docs
- 最新 Release:v0.7.0(含性能测试数据)
- Discord 社区:arcbox.link/discord
评论区
登录后可评论。