SuperAPI AI 工具集

instabox-snapshots

部署与运维

查看项目

更新于 10-27 11:35

技能介绍

instabox snapshots 用于保存和加载 box 的磁盘快照。快照是 box 磁盘(系统文件和 /data)的一份已保存副本,归属于 box 所属的组织:组织的每个成员都可以使用或删除它。加载方式是使用该快照创建一个新 box,新 box 会加入快照所在的组织。快照磁盘只包含已安装的软件和文件,不保存运行中的进程和内存(如需保留运行状态,应使用 instabox suspend)。

保存快照

运行中的 box 可以直接保存,无需先停止:在磁盘上传完成前,快照在 instabox snapshot ls 中显示为 pending;使用 --no-wait 会立即返回,否则 CLI 会等待。只有处于 ready 状态的快照才能用来启动 box。

不要先停止 box:停止会结束其中的所有进程。实时快照类似于一次干净断电:磁盘上的内容会保留,程序仅保存在内存中的内容则不会。只有当服务器提示该 box 必须停止,或某个程序必须先将其数据写入磁盘(例如数据库正在写入)时,才应依次运行 instabox stop work、保存快照、再运行 instabox start work。

使用 --root-only 只保存系统文件(不含 /data,因此也没有 HOME 和工作区):快照更小,用它启动的 box 会得到空的 /data。

磁盘快照包含由应用程序写入的凭据文件、工具登录信息以及历史 Vault 文件。托管的 Secret 环境位于 tmpfs,但应用可能把真实环境变量值复制到磁盘。暂停的 box 还会在进程内存中保留凭据,不过快照不保存内存。因此不要把快照描述为不含凭据。在分享或长期保留快照前,应检查其中被复制的凭据,并在需要时轮换上游凭据。

快照名称应能说明其内容(如 node20-playwright、api-db-seeded)。名称由 1–63 个 a–z、0–9 和 - 字符组成,以字母或数字开头,并在组织内唯一。

加载快照

使用 --snapshot 时可以传入快照名称或其 sn_... 形式的 ID(较旧的快照以 im_ 开头,仍然可用)。新 box 始终加入快照所在的组织(指定其他组织会被拒绝),并沿用快照的 Linux 用户,除非用 --user 指定其他用户。

不启动任何 box,也能查看快照内容

instabox snapshot files 只读取快照的系统文件;/data(以及 HOME)无法在这里浏览。要检查 /data 下的文件,需要把快照加载为 box,再用 instabox exec 查看。

复制 box

没有直接的复制命令:先为它保存快照,再用该快照创建新 box,如果不再需要该快照就删除它。复制出的新 box 会获得新的沙箱身份,并采用其创建请求中的各项选择。如果没有指定 Secret 相关的选择参数,它会保持现有的 Vault 行为,并且不会加入组织的 Secrets;它不会继承源 box 的显式授权或排除项。若要同时关闭两个存储的新交付,可使用 --no-vault --secrets none --env-secrets none。如果需提供数据库凭据,应通过 --env-secrets DATABASE_URL 显式选择该环境 Secret;在创建时,仅这一个参数也会选中所有组织代理 Secret,可加上 --secrets none 或具体名称来缩小代理访问范围。复制过来的占位符不能获得与源沙箱相同的授权。新的选择不会清除已复制文件中真实存在的凭据;即使换了新的代理身份,这些文件也不适合分享。

清理

快照会计入组织的快照数量和存储限额(可用 instabox usage 查看)。不再需要的快照应删除。

典型智能体循环:先用 instabox create --name job --snapshot <base> 创建 box(空闲 30 分钟后会自动暂停);再用 instabox exec job -- ... 进行操作;当环境配置值得保留时,运行 instabox snapshot save job --name <base>-v2(无需停止 box,等待快照变为 ready);完成后用 instabox rm job 删除 box。