E2B 为 AI Agent 提供可按需创建的隔离执行环境。
本文基于阿里云计算巢,从 0 部署 E2B 集群版,并依次完成集群检查、Sandbox 与 Template 调用、Computer Use 验证以及扩缩容配置。

一、E2B 简介
E2B(Environment to Build) 是一个面向 AI Agent、编程助手和自动化测试等场景的开源云端沙箱引擎。每个 Sandbox 运行在独立的 Firecracker microVM 中,用于隔离和执行不可信代码。
核心特性
- 🔒 安全隔离:基于 Firecracker microVM,每个 Sandbox 拥有独立内核并通过 KVM 实现硬件虚拟化隔离;沙箱内可授予 root 权限,但不会直接获得宿主机权限。
- ⚡ 毫秒级启动:从预构建的 VM 快照恢复,跳过镜像拉取和环境初始化,并结合 userfaultfd 按需加载内存页,实现快速启动。
- ⏸️ 暂停与恢复:Pause 会保存内存、磁盘和 CPU 状态并释放沙箱计算资源,快照异步上传至 OSS;Resume 可恢复文件系统、内存和运行中的进程,但外部网络连接需要重新建立。
- 📈 弹性伸缩:API Worker 与 Client Worker 独立部署,通过阿里云 ESS 按需扩缩容;Client Worker 可选择弹性裸金属服务器或支持嵌套虚拟化的 ECS。
- 📦 模板系统:支持通过 Docker 镜像或自定义 Dockerfile 构建 Template,预置代码执行、桌面操作等模板,也可按业务需求自定义。
- 🔌 多端 SDK:提供 Python SDK、TypeScript SDK 和 CLI,兼容 E2B 开源 API,可集成到 Agent 应用中。
二、E2B 集群版整体架构
本文使用的计算巢 E2B 集群版基于官方 E2B 2026.29 版本适配构建,对应阿里云发行版本 2026.29.aliyun.1。下文截图和示例以该版本为基础,实际界面与配置以部署版本为准。
E2B 集群版主要由 Server、API Worker 和 Client Worker 三类节点组成:Server 负责集群管理与任务调度,API Worker 对外提供 API 和 Dashboard,Client Worker 负责创建并运行 Sandbox。RDS、Redis 和 OSS 分别为集群提供数据存储、缓存和对象存储。

Agent 通过 SDK 或 CLI 调用 API,请求由 API Worker 处理后交给 Client Worker,最终在 Firecracker microVM 中启动 Sandbox。API Worker 与 Client Worker 分别由独立的 ESS 伸缩组管理,可以根据 API 请求量和 Sandbox 容量分别扩容。
三、🚀 部署流程
前置条件
⚠️ 已开通阿里云账号,并具备 ECS、RDS、Redis、VPC 等资源的创建权限。
1. 一键创建实例
访问计算巢 E2B 社区版创建页面,选择集群版,然后按照页面顺序完成以下配置。

可以选择弹性裸金属服务器,或支持嵌套虚拟化的 ECS 部署 E2B:
- 弹性裸金属服务器:原生提供硬件虚拟化能力。
- 普通 ECS:必须选择支持嵌套虚拟化的实例规格,并提前开通该能力。
⚠️ 注意:部署前请确认实例规格支持嵌套虚拟化,并已满足相应开通条件,否则可能导致部署失败。支持范围与开通方式请参见为 ECS 实例开启嵌套虚拟化功能。

2. 确认资源配置
系统将自动生成费用预估明细。确认配置无误后,点击 下一步:确认订单,核对信息后点击 立即创建。
⚠️ 注意:E2B 需要使用域名进行访问。您可以根据使用场景配置公网或内网访问:
- 公网访问:准备域名、DNS 解析和 TLS 证书,并确保公网入口可达。
- 内网调试:配置内网或本地域名解析及对应证书,通过可达 VPC 的客户端调用。
API 域名和动态 Sandbox 子域名都需要正确解析。使用自签证书时,客户端需信任对应 CA;是否能从公网访问取决于网络和 DNS 配置。
生成 TLS 证书:生成方式可参考计算巢 E2B 部署文档。
🕐 部署过程约需 10~20 分钟,实际耗时取决于资源创建和初始化进度。
四、部署成功后的检查
1. 获取访问地址与凭证
部署完成后,在计算巢控制台的实例详情页查看输出,其中比较重要的是 E2B 根域名与 API Key,并分别配置到以下环境变量:
- E2B_DOMAIN
- E2B_API_KEY
这两个内容用于通过 SDK 访问 E2B 集群。服务实例输出中的字段名称以实际版本为准。

2. 登录 E2B Dashboard
点击 DashboardUI,使用计算巢输出的账号与密码登录。本文版本预置邮箱为 admin@e2b.com,初始化密码以实例输出为准。

登录后先查看 Sandboxes 页面。这里可以观察当前存活的 Sandbox 数、每秒启动速率、历史峰值和并发曲线。

然后进入 Templates,确认 base、code-interpreter-v1、browser-use、desktop 等需要使用的 Template 已经构建完成。

3. 通过 Nomad 检查 Jobs
通过计算巢提供的安全代理打开 NomadUI,使用计算巢输出的 NomadToken 登录,检查 Jobs 是否都正常运行:

五、使用自建 E2B 跑通核心用例
部署检查完成后,分别验证 Sandbox 生命周期、Template 构建链路和 Computer Use。
先安装 SDK,并配置连接信息:
python -m pip install "e2b==2.30.0" "e2b-desktop==2.4.1"
export E2B_DOMAIN="<your-domain>"
export E2B_API_KEY="e2b_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 仅在自建环境使用自签 CA 时需要
export SSL_CERT_FILE="/path/to/ca-fullchain.pem"
已安装 E2B CLI 时,还可以查看模板与沙箱列表:
e2b template list
e2b sandbox list
用例一:演示 Sandbox 完整生命周期
使用预置的 base Template,依次演示创建、执行命令、暂停、恢复和删除。恢复后再次读取暂停前写入的文件,用于确认 Sandbox 状态已正确保留:
import os
# 使用自签 CA 时,在启动 Python 前配置 SSL_CERT_FILE。
from e2b import Sandbox
connection = {
"domain": os.environ["E2B_DOMAIN"],
"api_key": os.environ["E2B_API_KEY"],
}
sandbox = Sandbox.create(
template="base",
timeout=60,
**connection,
)
sandbox_id = sandbox.sandbox_id
try:
print('[1/5] 创建 sandbox:', sandbox_id)
result = sandbox.commands.run(
'printf "hello from my own E2B" | tee /tmp/lifecycle.txt'
)
print("[2/5] 执行命令")
print(" stdout:", result.stdout)
print("[3/5] 暂停 Sandbox")
print(" paused:", sandbox.pause())
print("[4/5] 恢复 Sandbox")
sandbox = Sandbox.connect(sandbox_id, timeout=60, **connection)
result = sandbox.commands.run("cat /tmp/lifecycle.txt")
print(" resumed_stdout:", result.stdout)
finally:
Sandbox.kill(sandbox_id, **connection)
print("[5/5] 删除 sandbox:", sandbox_id)
正常输出类似:
[1/5] 创建 sandbox: xxx
[2/5] 执行命令
stdout: hello from my own E2B
[3/5] 暂停 Sandbox
paused: True
[4/5] 恢复 Sandbox
resumed_stdout: hello from my own E2B
[5/5] 删除 sandbox: xxx
Sandbox.connect() 会在目标 Sandbox 处于暂停状态时自动将其恢复。脚本运行期间可以在 Dashboard 中观察状态变化,并查看事件、日志、终端和文件系统;脚本退出后,Sandbox 应从运行列表中消失。

这个用例验证了完整生命周期链路:Create → Command → Pause → Resume → Kill。
用例二:构建 Template,并从 Template 创建 Sandbox
Template 用于固化基础镜像、依赖、文件、环境变量和启动命令。以下示例创建一个临时 Template,构建完成后再从它创建 Sandbox:
import os
from e2b import Sandbox, Template, default_build_logger, wait_for_timeout
connection = {
"domain": os.environ["E2B_DOMAIN"],
"api_key": os.environ["E2B_API_KEY"],
}
template_name = "demo"
template = (
Template()
.from_base_image()
.set_envs({
"HELLO": "hello from my own template"})
.set_start_cmd('echo "$HELLO"', wait_for_timeout(1_000))
)
build = Template.build(
template,
template_name,
cpu_count=2,
memory_mb=2048,
on_build_logs=default_build_logger(),
**connection,
)
print("template_id:", build.template_id)
print("build_id:", build.build_id)
sandbox = Sandbox.create(template=template_name, timeout=120, **connection)
try:
result = sandbox.commands.run("printf 'template sandbox is ready'")
print("sandbox_id:", sandbox.sandbox_id)
print("stdout:", result.stdout)
finally:
sandbox.kill()
构建过程中可以在 Templates / Builds 查看状态与日志。

用例三:创建 Computer Use 桌面
e2b-desktop 在 Sandbox 生命周期上封装了桌面、鼠标键盘和 VNC Stream。以下示例创建一个 Desktop Sandbox,启动带临时密码的 noVNC 服务,并输出可以在浏览器中打开的 URL:
import os
from e2b_desktop import Sandbox
connection = {
"domain": os.environ["E2B_DOMAIN"],
"api_key": os.environ["E2B_API_KEY"],
}
desktop = Sandbox.create(
template="desktop",
resolution=(1024, 720),
dpi=96,
timeout=300,
**connection,
)
try:
desktop.stream.start(require_auth=True)
auth_key = desktop.stream.get_auth_key()
stream_url = desktop.stream.get_url(auth_key=auth_key)
# 执行一次真实桌面动作:打开网页并移动鼠标。
desktop.open("https://example.com")
desktop.wait(2_000)
desktop.move_mouse(512, 360)
print("View desktop at:", stream_url)
print("screen_size:", desktop.get_screen_size())
print("cursor_position:", desktop.get_cursor_position())
input("在浏览器中打开 URL,验证完成后按回车清理资源:")
finally:
try:
desktop.stream.stop()
finally:
desktop.kill()
在浏览器中打开 stream_url,即可查看并操作 Sandbox 中的 Linux 桌面,验证完整的 Computer Use 链路。

六、⚖️ 扩缩容配置
E2B 集群版基于阿里云弹性伸缩(ESS)实现 API Worker 和 Client Worker 节点的动态扩缩容,以应对不同的负载需求。
手动扩缩容
本文版本部署完成后,系统预置以下四条弹性伸缩规则,可在阿里云 ESS 控制台手动执行:
| 规则名称 | 作用 | 调整数量 |
|---|---|---|
api-scaling-out |
API Worker 扩容 | +1 |
api-scaling-in |
API Worker 缩容 | -1 |
client-scaling-out |
Client Worker 扩容 | +1 |
client-scaling-in |
Client Worker 缩容 | -1 |
操作步骤:
- 进入阿里云计算巢实例详情页,点击 资源 Tab,筛选“弹性伸缩:伸缩组”。

- 找到对应的伸缩组(
client或api)。 - 进入 伸缩规则 页面,选择对应规则点击 执行。

自动扩缩容!
本文版本的自动扩缩容规则如下,实际阈值和启用状态以服务实例配置为准:
- 伸缩组平均内存使用率连续 1 分钟达到 75% 时,新增 1 台 ECS;
- 伸缩组平均 CPU 使用率连续 2 分钟达到 70% 时,新增 1 台 ECS;
- 伸缩组平均内存使用率连续 10 分钟低于 30% 时,缩容 1 台 ECS(默认不开启)。
七、总结
基于阿里云计算巢部署的 E2B 集群版,提供隔离、快速、可弹性扩展的 Sandbox 运行环境。Firecracker microVM 负责隔离不可信代码,快照机制支持快速启动和状态保存,ESS 则提供节点弹性伸缩能力。
本文完成了从集群部署、Dashboard 与 Nomad 检查,到 Sandbox 生命周期、Template 构建和 Computer Use 桌面验证的完整实践,并介绍了扩缩容配置。
如果你正在构建 AI Agent、AI 编程助手、在线代码执行平台,或有执行不可信代码的需求,可以通过计算巢部署 E2B 集群,快速开始验证和接入。有任何问题或建议,欢迎交流。
参考
如果您有任何反馈或疑问,欢迎加入 计算巢 E2B 用户交流群(钉钉群号:198895003834),与工程师即时沟通。