文档中心>Agent Runtime>操作指南>使用 Agent 沙箱>管理沙箱工具>创建自定义沙箱(基于代码解释器沙箱镜像)

创建自定义沙箱(基于代码解释器沙箱镜像)

最近更新时间:2026-03-24 17:52:42

我的收藏

概览

本文档将指导您基于代码解释器沙箱镜像创建自定义沙箱,主要步骤包括:


一、构建与推送镜像

1.1 前置条件

本地已安装 Docker
已完成容器镜像服务(个人版)的初始化操作,详情请参见 容器镜像服务个人版快速入门
若使用容器镜像服务企业版,请参见 容器镜像服务企业版快速入门
说明:
下文示例均以您的镜像仓库地址 ccr.ccs.tencentyun.com/example/code:v1 为例,请在实际操作中替换为您的真实地址。

1.2 构建镜像

1. 首先在您的计算机的目录下创建 Dockerfile。
2. 参考以下内容编写 Dockerfile
# 腾讯云Agent沙箱 代码解释器沙箱镜像
From ccr.ccs.tencentyun.com/ags-image/sandbox-code:latest
# 安装您想要的依赖
RUN pip install aiohttp
3. 在项目根目录下执行以下命令构建镜像:
docker build -t ccr.ccs.tencentyun.com/example/code:v1 . --platform=linux/amd64
参数说明:
-t:指定镜像的完整标签(格式:仓库地址/镜像名:版本)。
. :使用当前目录下的 Dockerfile。
--platform=linux/amd64:指定目标平台为 linux/amd64。
注意:
当前只支持使用 linux/amd64 目标平台的镜像。

1.3 推送镜像

在项目根目录下执行以下命令:
docker push ccr.ccs.tencentyun.com/example/code:v1

1.4(可选)推送已有镜像

假设已有镜像的地址为 ccr.ccs.tencentyun.com/ags-image/sandbox-code:latest,可按以下步骤操作:
1. 先拉取该镜像:
docker pull ccr.ccs.tencentyun.com/ags-image/sandbox-code:latest
2. 然后给该镜像打上要推送到的镜像仓库的 tag:
docker tag ccr.ccs.tencentyun.com/ags-image/sandbox-code:latest ccr.ccs.tencentyun.com/example/code:v1
3. 推送该镜像到镜像仓库:
docker push ccr.ccs.tencentyun.com/example/code:v1

二、创建角色

1. 登录腾讯云 访问管理控制台,选择左侧导航中的角色
2. 单击新建角色,选择角色载体:腾讯云产品服务。如下图所示:

3. 创建以 Agent Runtime 为角色载体的角色。
3.1 选择 Agent Runtime 作为角色载体。

3.2 若使用容器镜像服务个人版(CCR),授予 CCR 权限 。

如果您使用企业版,则授予 TCR 权限。

注意:
上述操作授予了 TCR/CCR 的全部权限,如果您需要精细化管控,请查阅 访问控制相关文档,以下为 TCR 的最小权限集示例:
# 您可以根据需要修改您要授权的资源,在resource处将*替换为对应镜像仓库的资源六段式即可
{
"statement": [
{
"action": [
"tcr:CreateInstanceToken",
"tcr:DescribeImages",
"tcr:DescribeInstances",
"tcr:DescribeInternalEndpoints",
"tcr:DescribeNamespaces",
"tcr:DescribeRepositories",
"tcr:DescribeApplicationTokenPersonal",
"tcr:DescribeImagePersonal",
"tcr:DescribeImageFilterPersonal",
"tcr:DescribeRepositoryOwnerPersonal",
"tcr:DescribeNamespacePersonal",
"tcr:DescribeRepositoryFilterPersonal",
"tcr:PullRepository*"
],
"effect": "allow",
"resource": "*"
}
],
"version": "2.0"
}
3.3 配置角色标签:按需设置角色标签,如无需要可直接进入下一步。
3.4 设置角色名称:
说明:
请记住此处您填写的角色名称,该名称将在后续步骤中使用。

4. 单击完成

三、授予账号 PassRole 权限

1. 登录腾讯云 访问管理控制台,选择左侧导航中的角色
2. 选择您刚创建的角色进入详情页。

3. 
复制角色的 RoleArn。


4. 访问腾讯云 访问管理控制台策略页面,单击新建自定义策略
4.1 选择按策略语法创建。如下图所示:

4.2 选择空白模板。

4.3 填写策略内容。

注意:
请将 qcs::cam::uin/**********:roleName/ags-ccr-full 替换为步骤3复制的 RoleArn
{
"version": "2.0",
"statement": [
{
"action":[
"cam:PassRole"
],
"effect":"allow",
"resource":[
"qcs::cam::uin/**********:roleName/ags-ccr-full"
]
}
]
}
5. 进入访问管理控制台的 用户列表,为目标用户或用户组授予策略。


四、创建自定义沙箱

1. 访问腾讯云 Agent Runtime 的 沙箱(原自定义沙箱),单击新建沙箱工具。如下图所示:

2. 创建沙箱工具页面:
2.1 配置工具名称和已创建的 CAM 角色。

2.2 配置镜像和启动命令。
注意:
代码解释器沙箱镜像使用 S6-Overlay 作为启动管理系统,其中 /init 为 S6 的启动入口命令,默认启动参数 sleep infinity 用于保持沙箱持续运行。
如果您需要运行自定义程序,可以将 sleep infinity 替换为您的应用启动命令,例如:python /app/app.py。具体参数填写方式请参考下方注意事项:
1. 启动命令必须为 /init,以确保代码解释器沙箱的内置功能正常加载。
2. 每个启动参数需分别填写在独立的输入框中。例如,默认参数应填写为:
sleep(第一个输入框)
infinity(第二个输入框)
如需更多参数,请点击新增添加输入框。
3. 默认工作目录(Workdir)为根目录/,且不可修改;默认运行用户为 root,且不可修改。

2.3 配置端口和资源规格。

说明:
49999是使用代码解释器沙箱 run_code 功能所需要的端口,49983是使用代码解释器 commands.run/files.write/files.read 所需要的端口。
请根据您的需求选择资源规格,代码解释器原生功能需要至少1核CPU和1G内存。
2.4 配置探针和网络策略。

说明:
此处使用代码解释器沙箱提供的 run_code 服务的 /health 端口做探针,可以保证沙箱启动后功能可用。
2.5 按需配置其他参数如文件系统挂载、环境变量等。
注意:
如果您在启动命令处 /init 后面启动了您的应用程序,且想要让其读取环境变量,请在环境变量中加入 S6_KEEP_ENV=1。
3. 单击确定完成创建。