自建 E2B 实战:用阿里云计算巢搭建 AI Agent 沙箱

简介: 基于阿里云计算巢自建 E2B,图文演示集群部署、沙箱生命周期、模板构建、Computer Use 与弹性伸缩,帮助 AI Agent 接入自己的云上执行环境。

E2B 为 AI Agent 提供可按需创建的隔离执行环境。

本文基于阿里云计算巢,从 0 部署 E2B 集群版,并依次完成集群检查、Sandbox 与 Template 调用、Computer Use 验证以及扩缩容配置。

计算巢自动化交付 E2B 集群的六个步骤

一、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 分别为集群提供数据存储、缓存和对象存储。

阿里云计算巢自建 E2B 集群版架构

Agent 通过 SDK 或 CLI 调用 API,请求由 API Worker 处理后交给 Client Worker,最终在 Firecracker microVM 中启动 Sandbox。API Worker 与 Client Worker 分别由独立的 ESS 伸缩组管理,可以根据 API 请求量和 Sandbox 容量分别扩容。

三、🚀 部署流程

前置条件

⚠️ 已开通阿里云账号,并具备 ECS、RDS、Redis、VPC 等资源的创建权限。

1. 一键创建实例

访问计算巢 E2B 社区版创建页面,选择集群版,然后按照页面顺序完成以下配置。

选择计算巢 E2B 集群版并配置服务实例

可以选择弹性裸金属服务器,或支持嵌套虚拟化的 ECS 部署 E2B:

  • 弹性裸金属服务器:原生提供硬件虚拟化能力。
  • 普通 ECS:必须选择支持嵌套虚拟化的实例规格,并提前开通该能力。

⚠️ 注意:部署前请确认实例规格支持嵌套虚拟化,并已满足相应开通条件,否则可能导致部署失败。支持范围与开通方式请参见为 ECS 实例开启嵌套虚拟化功能。

配置 E2B 集群资源与实例规格

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,初始化密码以实例输出为准。

使用计算巢输出的预置账号登录 E2B Dashboard

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

E2B Dashboard 的 Sandboxes 监控页面

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

E2B Dashboard 中可用的 Sandbox Templates

3. 通过 Nomad 检查 Jobs

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

通过 Nomad 检查集群 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 应从运行列表中消失。

在 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 查看状态与日志。

在 Dashboard 中查看 Template 构建状态

用例三:创建 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 链路。

通过浏览器查看并操作 Sandbox 桌面

六、⚖️ 扩缩容配置

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

操作步骤:

  1. 进入阿里云计算巢实例详情页,点击 资源 Tab,筛选“弹性伸缩:伸缩组”。

从计算巢资源列表找到伸缩组

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

在 ESS 中执行扩缩容规则

自动扩缩容!

本文版本的自动扩缩容规则如下,实际阈值和启用状态以服务实例配置为准:

  • 伸缩组平均内存使用率连续 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),与工程师即时沟通。

相关文章
|
1月前
|
人工智能 监控 安全
零代码改造:让 AI Agent Sandbox 不再是黑盒
OBI 基于 eBPF 在内核与库函数层零代码拦截通信,自动生成调用链与指标,内置 OpenAI、Anthropic、Gemini、Qwen 及自定义 LLM 网关的 GenAI 语义追踪,覆盖 LLM、工具、MCP 与 RAG 全链路,从性能、成本、安全三个维度透视沙箱执行。
435 13
|
人工智能 安全 Apache
QwenPaw:你的私人 AI 助理 —— 数据归你、记忆进化、多端触达的开源个人智能体
QwenPaw 是一款开源、本地优先的AI个人智能体(Apache 2.0),数据归属用户、记忆自主进化、支持钉钉/飞书/微信等多端触达。3行命令即可部署,内置Coding IDE、Persona人格、定时任务、MCP工具生态与多Agent协作,真正属于你的私有AI助理。
QwenPaw:你的私人 AI 助理 —— 数据归你、记忆进化、多端触达的开源个人智能体
|
1月前
|
人工智能 弹性计算 自然语言处理
一句话买云:AI 售卖如何把业务目标变成可部署的云架构
AI售卖页通过自然语言理解业务目标,自动生成含架构、费用及部署的完整云方案,实现从需求到资源创建、运维及释放的一站式管理。
|
1月前
|
存储 人工智能 运维
自建 E2B 进阶:预热池、存储与运维
介绍计算巢自建 E2B 的预热池、OSS 挂载、用户工作区、集群监控与钉钉告警,结合并发创建实测和控制台操作,展示 AI Agent 沙箱的配置与使用方法。
自建 E2B 进阶:预热池、存储与运维
|
8月前
|
存储 人工智能 安全
2026年AI知识管理闭环指南:OpenClaw部署+Obsidian+Claude Code,10分钟搭建高效工作流
2026年,AI驱动的知识管理已从“工具叠加”升级为“闭环协同”。OpenClaw的自动化采集与执行能力、Obsidian的结构化存储优势、Claude Code的深度分析功能,三者组合形成“收集-整理-创作-分享”的完整链路,成为内容创作者、研究者、职场人的必备工具套装。
5718 1
|
2月前
|
人工智能 弹性计算 运维
一句话买云:AI 售卖如何把业务目标变成可部署的云架构
AI售卖通过自然语言理解业务目标,自动生成含架构、报价的可部署方案,实现从需求到运维的一站式云端资源管理。
|
4月前
|
人工智能 自然语言处理 负载均衡
用说人话的方式,管理你的阿里云资源
iac-code 是一个终端 AI 助手,让你用自然语言管理阿里云资源。不用记概念、不用点控制台,说出需求就能创建服务器、数据库等云资源,还能在创建前预估费用。由阿里云 ROS 团队开源。
用说人话的方式,管理你的阿里云资源
|
4月前
|
人工智能 运维 监控
云原生AI Agent成本直降九成利器:阿里云MSE+Sandbox组合、Agent休眠唤醒与任务治理全解读
在2026年AI智能体规模化落地的浪潮下,OpenClaw、Hermes、Dify、LangChain等各类Agent框架被广泛应用于自动化运维、数据处理、批量内容生成、智能办公等企业场景。但传统云端部署的AI Agent普遍存在资源独占、利用率低下、长期运行成本高昂的痛点,成为众多中小企业和大型团队规模化推广的阻碍。针对这一行业难题,阿里云正式推出**MSE AI任务调度**结合**Agent Sandbox沙箱运行时**的一体化解决方案,依托动态休眠、提前唤醒、弹性扩缩、全链路任务治理等核心能力,可将AI Agent整体使用成本降低90%以上。本文将从AI Agent高成本根源、组合架构原
315 0
|
9月前
|
数据采集 监控 数据可视化
快速上手:LangChain + AgentRun 浏览器沙箱极简集成指南
AgentRun Browser Sandbox 是基于云原生函数计算的浏览器沙箱服务,为 AI Agent 提供安全、免运维的浏览器环境。通过 Serverless 架构与 CDP 协议支持,实现网页抓取、自动化操作等能力,并结合 VNC 实时可视化,助力大模型“上网”交互。
1275 43
|
6月前
|
人工智能 自然语言处理
上下文长度是什么意思?AI大模型128k、256k和1M上下文长度是什么概念?
上下文长度指大模型单次处理的最大Token数,涵盖输入与输出。如Qwen、DeepSeek等支持128K(约16万汉字)、256K乃至1M上下文,直接影响长文档理解、多轮对话与代码分析能力。阿里云百炼/通义平台提供详细参数与阶梯计费
16140 3