一键销毁全部测试沙箱的核心是统一管理机制而非单纯点击操作,要求沙箱必须由控制服务创建并注册至生命周期系统,手动docker run的容器因无元数据绑定不可识别;需满足通过opensandbox server/e2b sdk/网关创建、打统一标签或运行于指定网络/命名空间;docker/k8s/opensandbox均有对应安全清理命令,并默认启用确认机制、protected标签保护及任务状态检查;进阶实践包括ci自动清理、ttl自动回收和web控制台勾选销毁。
一键销毁全部测试沙箱,核心不是“点一下就全清”,而是靠统一管理机制实现批量清理。关键前提是:所有沙箱必须由同一套控制服务创建并注册在生命周期管理系统中,不能是手动 docker run 起来的散装容器。
确保沙箱受控:从创建阶段就埋好清理入口
手动用 docker run 启动的容器,没有元数据绑定,无法被系统识别为“测试沙箱”。真正可一键销毁的沙箱,需满足以下任一条件:
- 通过 OpenSandbox Server、E2B SDK 或自研沙箱网关创建(会自动记录容器 ID、标签、命名空间、创建时间等)
- 启动时打上统一标识标签,例如 docker run --label sandbox=dev --label owner=john
- 运行在指定 Docker 网络(如 dev-sandbox-net)或命名空间(K8s 中使用 dedicated-sandbox-ns)
常用一键销毁命令(按环境类型)
以下命令均默认只影响带明确沙箱标记的资源,不会误删生产容器或开发中间件:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
-
Docker 环境(推荐):
docker rm -f $(docker ps -q --filter label=sandbox=dev)
搭配卷清理:docker volume prune -f --filter label=sandbox=dev -
Kubernetes 环境:
kubectl delete pod -n sandbox-ns -l sandbox-type=test
再删对应 job、pv、configmap:kubectl delete all -n sandbox-ns -l sandbox-type=test -
OpenSandbox Server 用户:
调用 API:DELETE /v1/sandboxes?status=running&ttl=0(自动清理所有超时/闲置沙箱)
或使用 CLI:opensandbox cleanup --all --force
安全防护:防止误删的两个硬约束
即便执行一键销毁,也应默认启用保护机制:
- 不带 --force 参数时,命令先列出待删沙箱 ID 和创建时间,确认后才执行
- 自动跳过标注了 protected=true 标签的沙箱(可用于保留关键调试实例)
- 销毁前检查容器是否正在执行任务(如检测 /tmp/.busy 文件或健康探针响应)
进阶建议:让销毁变成“自动收尾”动作
真正高效的团队不靠人工触发销毁,而是把清理逻辑嵌入流程:
- CI 流水线末尾自动调用 cleanup_sandboxes 脚本
- 沙箱创建时设置 TTL(如 30m),由后台定时任务扫描过期实例并回收
- Web 控制台提供「本次会话所有沙箱」聚合视图,勾选即删,操作留痕可审计










