Перейти к содержимому

Снапшоты

Снапшот сохраняет файловую систему и оперативную память работающей песочницы. На время создания снапшота исходная песочница ненадолго ставится на паузу, затем продолжает работу с прежним идентификатором. Из одного снапшота можно запустить несколько новых песочниц.

mjs
import { Sandbox } from "@abox-dev/sdk";

const sandbox = await Sandbox.create();
let restored;
let snapshot;

try {
  await sandbox.files.write("/tmp/checkpoint.txt", "state from snapshot");
  snapshot = await sandbox.createSnapshot();

  restored = await Sandbox.create(snapshot.snapshotId);
  console.log(await restored.files.read("/tmp/checkpoint.txt"));
} finally {
  if (restored) await restored.kill();
  await sandbox.kill();
  if (snapshot) await Sandbox.deleteSnapshot(snapshot.snapshotId);
}

Создание снапшота прерывает активные потоки команд, PTY и соединения с сервисами исходной песочницы. После операции подключите их заново.

Снапшоты подходят для контрольных точек и отката состояния среды. Если среду можно описать повторяемыми шагами сборки, используйте шаблон. Ненужный снапшот удаляется через deleteSnapshot или delete_snapshot.