Runners want two contradictory things: a clean slate per job and no image pulls. A golden snapshot gives both — bake base images into a snapshot once, restore it before each job.
Rides hawser snapshot (#122). Docker Desktop has no engine snapshot at all.
Work
hawser reset --to <snapshot> — restore with the confirmations skipped (it is a runner), --json result, exit codes.
- Make restore fast: measure
snapshot restore today (export+import of a VHDX-backed distro); explore keeping the golden tar uncompressed and pre-staged, or wsl --import-in-place where applicable. Target: single-digit seconds for a warm-cache golden of a few GB.
- Post-job hook pattern:
hook.post-stop or a runner after_script calling hawser reset --to golden.
- Doc: baking a golden (
hawser install → pull your base images → snapshot save golden).
Acceptance
- Two consecutive jobs see no state from each other and start with the golden images present.
- Restore time is documented with real numbers.
Runners want two contradictory things: a clean slate per job and no image pulls. A golden snapshot gives both — bake base images into a snapshot once, restore it before each job.
Rides
hawser snapshot(#122). Docker Desktop has no engine snapshot at all.Work
hawser reset --to <snapshot>— restore with the confirmations skipped (it is a runner),--jsonresult, exit codes.snapshot restoretoday (export+import of a VHDX-backed distro); explore keeping the golden tar uncompressed and pre-staged, orwsl --import-in-placewhere applicable. Target: single-digit seconds for a warm-cache golden of a few GB.hook.post-stopor a runnerafter_scriptcallinghawser reset --to golden.hawser install→ pull your base images →snapshot save golden).Acceptance