You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
基于 E2B 协议管理
快速入门
复制全文
下载 pdf
快速入门
本文基于最小可用策略(MVP),通过 Python SDK 串联创建模板、创建 Sandbox、读写文件、执行代码与命令、暂停与恢复、查询状态等常用操作,模拟创建 AI Agent 实例并完成数据持久化的完整流程。
准备工作
  1. 在 VCI Agent Sandbox 控制器 YAML 文件中配置 E2B 相关参数。
  • 未安装 VCI Agent Sandbox
    已安装 VCI Agent Sandbox
    请参考 安装指南,安装 VCI Agent Sandbox,并在values.yaml文件中将enableE2BServer设置为true。其余参数按实际情况配置。
    注意
    安装 VCI Agent Sandbox 时,agent-sandbox 应用模板的 Chart 版本,请选择 v0.1.1-vke.3 及以上版本,低版本中没有内置 E2B 相关参数。
  1. 安装 E2B Python SDK。
  • pip install e2b-code-interpreter==2.4.1 e2b==2.10.2 anthropic python-dotenv
  1. 确保有可用的 E2B API Key,并在你的运行环境中配置好访问 E2B API 所需的地址和密钥(如API_BASE_URLADMIN_API_KEY等)。默认情况下 E2B API Key 保存在agent-sandbox-system命名空间下名为e2b-key-store的 Secret 里,详情请参见 安装指南。您也可以通过 SDK 调用接口获取 API Key,详情请参见 API Key 管理
  1. 已通过 ALB Ingress 对外暴露了 E2B 服务。详情请参见 通过 Ingress 暴露 E2B 服务
操作步骤
步骤一:创建模板
模板(Template)用来定义 Sandbox 启动时的各类参数。您可以在集群里通过 Kubernetes API 创建模板。您也可以通过 VCI SDK 创建模板,详情请参见 Template 管理
说明
  • 请替换下方代码示例中的镜像、资源和注解等配置,其余可以保持默认配置。
  • 成功创建后,获取 Template ID,为后续创建 Sandbox 实例备用。
apiVersion: extensions.agents.x-k8s.io/v1alpha1
kind: SandboxTemplate
metadata:
name: code-interpreter-template
namespace: default
spec:
podTemplate:
metadata:
annotations:
agent.sandbox.io/enable-envd-injection: "true" # 主容器注入 envd。
vci.vke.volcengine.com/enable-auto-create-imc: "true" # 开启自动镜像缓存。
vci.vke.volcengine.com/preferred-instance-family: vci.u1,vci.n3i # VCI 实例规格。
vci.volcengine.com/persistent-container: "true" # 是否开启容器可写层数据持久化。取值:true(开启)/false(关闭)。
vci.volcengine.com/tls-enable: "false" # 开启日志采集功能,将日志采集至日志服务。
vci.volcengine.com/usable-disk-capacity: "40" # 指定系统盘真实可用空间(可写层空间)。
vke.volcengine.com/burst-to-vci: enforce # 强制使用 VCI 部署。
spec:
containers:
- image: e2bdev/code-interpreter:latest # 使用 E2B 官方提供的可执行代码的镜像。
name: main
resources:
limits:
cpu: "2"
memory: 4Gi
requests:
cpu: "2"
memory: 4Gi
terminationGracePeriodSeconds: 1
步骤二:创建 Sandbox
通过 Python SDK,使用上一步获取的 Template ID 创建一个 Sandbox 实例。
from e2b_code_interpreter import Sandbox
sbx = Sandbox.create(
template="default--code-interpreter-template",
secure=True,
timeout=600,
metadata={"scene": "quickstart"}
)
print(f"sandbox id: {sbx.sandbox_id}")
参数说明如下表所示。
参数
说明
template
上一步创建的 SandboxTemplate 的 templateID。
说明
  • 通过 Kubernetes API 创建 SandboxTemplate 时:Template ID 为<metadata.namespace 值--metadata.name 值>,例如default--code-interpreter-template
  • 通过 VCI SDK 创建 SandboxTemplate 时:Template ID 为实际返回的template_id参数值。
secure
是否开启envd鉴权:
  • True:开启。生产环境建议开启鉴权。
  • False:不开启。
timeout
Sandbox 的存活时间,超时后 Sandbox 会被自动回收。
  • 单位:秒
  • 默认值:300
metadata
可选的附加信息,类型为Dict[str, str],便于在后续查询或运维时区分不同 Sandbox。
步骤三:写入与读取文件
创建好 Sandbox 后,可以在其中读写文件。下文以在本地的./test.txt写入 Sandbox 再读取并打印内容为例。
def write_and_read_file(sbx):
# 将本地文件写入 Sandbox 内的 /test.txt
with open("./test.txt", "rb") as file:
sbx.files.write("/test.txt", file)
# 从 Sandbox 中读取文件内容
file_content = sbx.files.read("/test.txt")
print("content in sandbox:", file_content)
参数说明如下表所示。
参数
说明
files.write(path, file)
向 Sandbox 内写入文件。path为 Sandbox 内的文件路径。
files.read(path)
从 Sandbox 内读取文件内容并返回。
步骤四:执行代码与命令
在文件准备好之后,可以在 Sandbox 内执行 Python 代码和 Shell 命令。
def run_code_and_command(sbx):
# 执行一段 Python 代码
sbx.run_code("print('hello world')")
# 执行一条 Shell 命令
sbx.commands.run("echo hello")
参数说明如下表所示。
参数
说明
run_code(code: str)
在 Sandbox 中执行一段 Python 代码。适合做快速试算、数据处理等。
commands.run(cmd: str)
在 Sandbox 中执行命令行指令。适合调用系统工具或脚本。
后续操作
暂停与恢复
当您暂时不再使用某个 Sandbox,需要释放算力(停止计费),同时期望保留 Sandbox 产生的数据当前状态时,可以使用暂停与恢复 Sandbox 功能。
def pause_and_resume(sbx):
# 暂停当前 Sandbox,底层会异步创建快照并回收 Pod
sbx.beta_pause()
sandbox_id = sbx.sandbox_id
# 需要恢复时,通过 connect 自动基于最近一次快照恢复
sbx = Sandbox.connect(sandbox_id=sandbox_id)
return sbx
参数说明如下表所示。
参数
说明
beta_pause()
将当前 Sandbox 置为暂停状态。该 API 调用是异步接口,即调用成功后对应的 Pod 会先被回收,快照在后台创建。
Sandbox.connect(sandbox_id=...)
后续连接同一个sandbox_id时,会自动基于最近一次暂停时生成的可写层快照恢复 Sandbox 数据。
查看信息与列表
在运行 Sandbox 过程中,可以查看 Sandbox 的状态。
def print_sandbox_info(sandbox_id: str) -> None:
sbx = Sandbox.connect(sandbox_id=sandbox_id)
info = sbx.get_info()
print("sandbox_id =", info.sandbox_id)
print("template_id =", info.template_id)
print("state =", info.state)
print("started_at =", info.started_at)
print("end_at =", info.end_at)
print("metadata =", info.metadata)
参数说明如下表所示。
参数
说明
get_info()
返回当前 Sandbox 的详细信息,包括绑定的模板、状态、起止时间以及metadata等。
最近更新时间:2026.09.16 11:54:07
这个页面对您有帮助吗?
有用
有用
无用
无用