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

一、构建与推送镜像
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 权限。

注意:
# 您可以根据需要修改您要授权的资源,在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 填写策略内容。

注意:
{"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. 单击确定完成创建。