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