ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

forkd快速开始:5分钟安装并运行你的第一个KVM microVM沙箱(quickstart+doctor完整教程)

forkd快速开始:5分钟安装并运行你的第一个KVM microVM沙箱(quickstart+doctor完整教程) forkd快速开始5分钟安装并运行你的第一个KVM microVM沙箱quickstartdoctor完整教程【免费下载链接】forkd高性能Agent沙箱预热虚拟机可以在约 100 毫秒内派生出 100 个独立实例运行过程中约 150 毫秒“分叉”出一个新的运行环境。底层使用 KVM 隔离并利用快照写时复制降低资源开销。项目地址: https://gitcode.com/deeplethe/forkdforkd 是一款面向 AI Agent 的高性能 KVM microVM 沙箱运行时预热虚拟机可在约 100 毫秒内派生出 100 个相互隔离的独立实例并在运行中约 150 毫秒“分叉BRANCH”出一个新的运行环境。它基于 Firecracker 构建通过快照 写时复制Copy-on-Write大幅降低资源开销让你获得硬件级隔离的同时把创建成本压到接近fork(2)进程分叉的水平。本教程带你用 5 分钟完成 forkd 安装跑通quickstart一键向导和doctor环境体检分叉出你的第一个 microVM 沙箱。为什么是 forkd先看懂这张图 ⚡️传统容器或冷启动虚拟机要 759 毫秒甚至几分钟才能准备好 100 个沙箱forkd 的做法是让一个“父 VM”先把 Python、依赖库、模型权重全部导入内存并预热暂停后写入磁盘快照之后每个子 VM 都通过mmap MAP_PRIVATE共享父 VM 的内存镜像由内核在页级别实现写时复制——子实例在分叉前几乎不占额外内存实测每子机仅 0.12 MiB。同一台主机实测Docker 335 秒、gVisor 289 秒、Firecracker 冷启动 759 毫秒而 forkd 仅需101 毫秒。环境要求30 秒确认你的机器能跑 forkd ✅在开始之前请确认满足以下条件这些也正是后面forkd doctor会逐项检查的内容要求说明操作系统x86_64 Linux推荐 Ubuntu 22.04 或更新实测 Ubuntu 24.04KVM存在/dev/kvmCPU 支持硬件虚拟化vmx或svm标志内核任意支持 KVM 的内核若要用 v0.4 实时分叉live BRANCH需 Linux ≥ 5.7cgroup v2统一层级mount -t cgroup2用于按子机做内存限额Firecrackerv1.7 二进制在PATH中live 模式使用官方适配分支虚拟机和云服务器需裸金属或支持嵌套虚拟化的规格都可以。一键安装 forkd两条命令装好 CLI 和守护进程forkd 提供 CLI 与守护进程两个二进制。最快的方式有两种任选其一方式一从源代码构建推荐新手git clone https://gitcode.com/deeplethe/forkd cd forkd sudo bash scripts/setup-host.sh # 一次性装好 KVM、Firecracker、KSM 调优等 cargo build --release sudo install -m 0755 target/release/{forkd,forkd-controller} /usr/local/bin/方式二使用预编译二进制包项目发布页提供免 Rust 工具链的预编译 tarballCLI 守护进程下载后解压到/usr/local/bin/即可效果等同上面的构建流程。完成后顺手安装网络命名空间脚本所需的环境并准备 N 个子机网络空间示例为 10 个sudo bash scripts/netns-setup.sh 10安装逻辑详见 scripts/README.md主机侧脚本均为幂等操作重复执行不会出错。forkd quickstart从零到第一次 fork 只需一条命令 装好后真正的重头戏只需一条命令sudo -E forkd quickstartquickstart是 forkd 的“零到一”向导它会自动完成以下四步每一步都会先征得你同意除非你加上--yes参数预检主机检查 KVM、Firecracker、内核镜像是否就绪缺什么会告诉你并询问是否自动补齐如下载 guest 内核、创建 tap 设备、预置 per-child netns制作父快照用本机 Docker 从python:3.12-slim烤出一个预热 Python 快照没有 Docker 时则自动从快照 Hub 拉取预制快照分叉 10 个子 VM从快照 fork 出 10 个独立 microVM 子机并打印每个子机的耗时幂等可重跑再次执行会复用已有快照、跳过已完成的步骤放心反复练习。你也可以用-n调整分叉数量例如sudo -E forkd quickstart -n 5。下面是一段未剪辑的完整演示forkd pull拉取便携快照后分叉 100 个 microVM100/100 存活全程约 200 毫秒。quickstart的实现入口在 crates/forkd-cli/src/main.rs。forkd doctor17 项体检清单逐项解读 任何时候觉得“哪里不对劲”第一个要跑的就是体检命令forkd doctor它会执行 17 项检查平台、硬件虚拟化、KVM、cgroup v2、IP 转发、tap 设备、per-child netns、Firecracker 二进制与版本、Docker、快照目录与磁盘空间、内核镜像、守护进程可达性以及 v0.4 live 分叉所需的uffd_wp、memfd_create、KSM、大页内存每项给出四种状态之一✅PASS— 绿色一切正常⚠️WARN— 黄色当前可用但之后可能踩坑❌FAIL— 红色阻塞问题并附具体修复提示·SKIP— 需要 root 权限的检查在无权限运行时跳过所有 FAIL 项都会打印针对性修复建议把“forkd fork报错但不知道原因”的调试循环压缩成一条命令。下面是一份配置良好的主机上的体检结果14 项通过、0 警告、0 失败 建议首次安装后先跑doctor全绿再跑quickstart升级内核或重装 Docker 后再跑一遍。live 分叉相关项是 WARN 而非 FAIL是因为只想用 Diff 分叉的用户无需启用userfaultfd。检查项与修复提示的实现见 crates/forkd-cli/src/doctor.rs。手动分叉你的第一个沙箱pull fork 组合拳如果你不想一条命令全托管下面是同一流程的手动版能更好掌控每一步# 1. 从快照 Hub 拉取预制快照14.5 MiB含 Python 3.12 LangGraph 预热环境 forkd pull deeplethe/langgraph-react # 2. 分叉 3 个子机共享父 VM 内存每子机约 10 毫秒 sudo -E forkd fork --tag langgraph -n 3 --per-child-netns每个子机都是独立的 Firecracker microVM拥有独立内核实例、网络命名空间和 cgroup 内存限额——逃逸需要击破 hypervisor 或内核漏洞而不是容器命名空间。快照 Hub 的工作模型如何打包pack、发布push、拉取pull你自己的快照见 docs/HUB.md。验证与进阶用 Python SDK 驱动你的第一个沙箱装好之后强烈建议给 Agent 装一个语言客户端后面驱动沙箱全靠它pip install forkd # Python SDKREST 客户端E2B 兼容接口from forkd import Sandbox # 可无缝替换 from e2b import Sandbox with Sandbox() as sb: print(sb.commands.run(uname -a).stdout) print(sb.eval(numpy.zeros(5).tolist())) # 复用预热的 PID 1约 1 毫秒Sandbox会复用父 VM 中已预热的 Python 解释器执行代码eval约 1 毫秒而不是冷启动子进程重新import numpy约 96 毫秒。SDK 源码位于 sdk/python/TypeScript 客户端见 sdk/typescript/还想让 Claude Desktop、Cursor 等 MCP 客户端直接分叉驱动 microVM安装forkd-mcp即可见 sdk/mcp/README.md。常见问题速查forkd 安装翻车怎么办 ️症状原因与解法doctor报 KVM FAIL未启用硬件虚拟化进 BIOS 打开 Intel VT-x / AMD-V云服务器需裸金属或嵌套虚拟主机fork报快照内核不匹配快照不能跨内核/跨 Firecracker 版本迁移用当前内核重建快照exec/eval超时子机网络命名空间缺失或宿主重启过网络重跑sudo bash scripts/netns-setup.sh Nsudo下找不到快照sudo会重置$HOME改用sudo -E forkd ...保留调用者环境变量端口 8889 被占用守护进程启动失败时ss -ltnp \| grep 8889找出占用进程完整故障排查手册见 docs/RUNBOOK.md。下一步实时分叉 BRANCH 与生态食谱 恭喜你的第一个 KVM microVM 沙箱集群已经跑起来了forkd 的杀手锏是BRANCH把运行中的沙箱暂停、快照其进行中的状态、再恢复全程约 150 毫秒v0.4 live 模式可压到 50 毫秒内暂停窗口——Agent 可以在“思考中途”分叉出多个平行分支各自继承完整对话状态、工具结果甚至 50 MiB 的文件系统数据。下图是一次 LangGraph Agent 的 BRANCH 演示源 Agent 跑到一半被分叉三个子沙箱继承同一份推理状态后各自发散。想进一步探索仓库内置了大量可直接运行的食谱recipes/比如代码解释器 recipes/e2b-codeinterpreter/、每测试分叉一个独立 Postgres 的 recipes/postgres-fixture/、CrewAI 多 Agent 扇出 recipes/crewai-fanout/ 等分支机制设计文档见 docs/design/branching.md。5 分钟回顾git clonesetup-host.sh装好 forkd →forkd doctor体检全绿 →sudo -E forkd quickstart一键分叉 10 个 microVM →pip install forkd用 SDK 驱动。现在去派生你的第 100 个沙箱吧 ⚡️【免费下载链接】forkd高性能Agent沙箱预热虚拟机可以在约 100 毫秒内派生出 100 个独立实例运行过程中约 150 毫秒“分叉”出一个新的运行环境。底层使用 KVM 隔离并利用快照写时复制降低资源开销。项目地址: https://gitcode.com/deeplethe/forkd创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表