
CubeSandbox Volume E2B兼容指南跨沙箱共享卷的使用姿势【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandboxCubeSandbox 是面向 AI Agent 的即时、并发、安全且轻量的沙箱平台其Volume持久化卷API 与 e2b 完全兼容卷数据在沙箱销毁后依然保留同一个卷还能被多个沙箱同时挂载共享。本文将带你快速上手CubeSandbox Volume 共享卷的创建、挂载、只读共享与安全销毁。什么是 CubeSandbox Volume 共享卷Volume是 CubeSandbox SDK 中管理持久化卷的类级工具类接口与 e2b 的 Volume API 对齐数据跨沙箱保留创建卷 → 挂载进沙箱 → 读写 → 销毁沙箱数据仍在下次重新挂载即可继续使用多沙箱同时共享一个卷可被多个沙箱同时挂载写入实时对所有挂载者可见按挂载点设置只读同一个卷可以在沙箱 A 中读写、在沙箱 B 中只读非常适合共享模型文件、数据集后端可插拔默认安装自带 MinIO 作为 S3 后端也可对接 AWS S3、腾讯云 COS、Cloudflare R2 等卷的生命周期由引用计数驱动你不需要自己管理挂载点操作行为Volume.create在后端创建volumes/id/前缀首次挂载refCount 0→1计算节点将前缀挂载并暴露给微虚拟机再次挂载refCount 0复用已有挂载不重复挂载沙箱销毁refCount →0自动卸载后端数据保留Volume.destroy删除整个卷前缀——不可逆快速上手E2B 兼容的 Volume 三步走1. 安装 SDK⚠️ 请使用cubesandboxSDK而不是官方e2bSDK——后者硬编码了 e2b.cloud 后端无法指向 CubeSandbox。pip install cubesandbox0.6.02. 配置环境变量export CUBE_API_URLhttp://cubeapi-host:3000 # 卷管理类调用控制面 export CUBE_TEMPLATE_IDyour-template-id # 创建沙箱用 export CUBE_PROXY_NODE_IPcubeproxy-or-cubelet-node-ip # 挂载卷后的文件 I/O数据面3. 创建卷并挂载进沙箱from cubesandbox import Sandbox, Volume vol Volume.create(my-data, drivers3) print(volume_id:, vol.volume_id) with Sandbox.create(volume_mounts{/workspace: vol}) as sb: sb.files.write(/workspace/hello.txt, from S3 volume) print(sb.files.read(/workspace/hello.txt)) # → from S3 volume # 沙箱已销毁数据仍在重新挂载后文件依旧可读 with Sandbox.create(volume_mounts{/workspace: vol}) as sb: print(sb.files.read(/workspace/hello.txt))volume_mounts是{沙箱内路径: 卷}的映射值可以是Volume实例、VolumeInfo或直接传volume_id字符串一次可挂载多个卷。跨沙箱共享卷两种典型姿势姿势一多沙箱共享一个读写卷多个沙箱同时挂载同一个卷数据实时互通适合协作式 Agent 任务如多个 Agent 实例共享工作区from cubesandbox import Sandbox, Volume vol Volume.create(shared, drivers3) mount {/workspace: vol} a Sandbox.create(volume_mountsmount) a.files.write(/workspace/probe.txt, hello from A) with Sandbox.create(volume_mountsmount) as b: print(b.files.read(/workspace/probe.txt)) # hello from A # ⚠️ 删除卷前必须 kill 所有挂载它的沙箱 a.kill()姿势二只读共享数据集 / 模型文件分发用VolumeMount包装卷即可把某一次挂载设为只读其余挂载不受影响from cubesandbox import Sandbox, Volume, VolumeMount vol Volume.create(shared-dataset, drivers3) with Sandbox.create(volume_mounts{/data: VolumeMount(vol, read_onlyTrue)}) as sb: sb.files.read(/data/model.bin) # 只读访问共享数据集只读是单次挂载属性而非卷属性同一个卷可以沙箱 A 读写、沙箱 B 只读并存。进阶与跨节点快照联动因为卷数据存放在共享对象存储中沙箱在另一台节点上恢复FromSnap时可以重新挂回原有卷 ID——恢复出的沙箱看到的始终是卷的当前内容而非回滚后的旧数据。若卷已被删除或目标节点缺少对应驱动沙箱会在启动前直接失败。详见 cross-node-snapshot.md。存储后端怎么选场景推荐驱动说明一键 / Helm 默认安装s3内置 MinIO安装器已配好插件与凭据开箱即用外部 S3AWS / R2 / 自建 MinIOs3在部署配置中填CUBE_S3_*连接参数腾讯云 COScos使用专用 COS 驱动插件默认安装已内置 MinIO无需手动安装插件或编辑配置文件省略driver参数时后端使用volume_plugins列表中的第一个插件默认安装即s3多后端集群建议显式写drivers3更清晰完整对接流程参考 s3-volume.md 与插件开发文档 volume-plugin.mdS3 插件完整示例见 examples/volume/s3/README.zh.mdCOS 插件示例见 examples/volume/cos/README.zh.md。注意事项与常见坑 删除卷前必须 kill 所有挂载方Volume.destroy()不会自动 detach仍有沙箱持有该卷时 API 返回409。销毁不可逆Volume.destroy会清空后端整个volumes/id/前缀且沙箱销毁不会误删卷数据——二者是独立生命周期。桶不用预先创建S3 驱动会先head-bucket缺失时自动创建桶名含点号时建议设置S3FS_EXTRA_OPTS-ouse_path_request_styleMinIO 通常也需要。list不返回 token需要 token 时调用Volume.get_info(volume_id)。卷名规则name须匹配^[a-zA-Z0-9_-]$且不超过 128 字符非法名称会在发出网络请求前直接抛ValueError。区分 Host Mount 与 S3 VolumeHost Mount 是把节点上已有目录绑定进沙箱节点本地S3 Volume 是用户级持久卷e2b Volume API两者互补。延伸阅读Python SDK 完整 Volume 参考sdk/python/docs/volume.zh.mdSDK 实现源码sdk/python/cubesandbox/_volume.pyE2B 兼容开发侧边车示例本地直连 Cube 集群examples/e2b-dev-sidecar/README_zh.md持久化存储Host Mount指南docs/guide/persistent-storage.md掌握以上姿势你就可以在 CubeSandbox 上像使用 e2b 一样管理跨沙箱共享卷了数据随卷而存、随destroy而亡沙箱来了又走卷中的数据始终在线。【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考