跳转到内容
use-cases / branch-computers-like-git / hero
快照 · 构建开发环境

像 Git 分支代码一样分支计算机

快照冻结一个运行中的容器 — 文件系统、进程、内存、开放的文件描述符。在 5-15 秒内还原。用一个 POST 分叉到单独的容器。分支,但针对整台机器。

快照文档
use-cases / branch-computers-like-git / capture

实际捕获的内容

两种模式,由快照时容器的状态决定。有状态捕获一切;无状态仅捕获文件系统。

运行中时创建 1-5 秒 · 恢复 5-15 秒

有状态——运行中的容器

  • 文件系统(CoW 增量)BTRFS reflinks;后续快照仅存储更改的块。
  • 进程树长时间运行的守护进程从执行中断处恢复,而非从启动处。
  • 内存状态堆、栈、内存映射。约 4 GB 额外磁盘用于 RAM 转储。
  • 打开的文件描述符本地套接字和 FD 幸存;远程对端则不然。
  • 终端滚动回溯实时 tmux/screen 会话从中断处恢复。
已停止时创建 1-5 秒 · 冷启动 5-15 秒

无状态——已停止的容器

  • 文件系统(CoW 增量)与有状态相同的增量存储模型。
  • 进程树容器从捕获的文件系统全新启动。
  • 内存状态不转储 RAM——节省磁盘和时间。
  • 打开的文件描述符冷启动时由新进程重新打开。
  • 数据库文件Postgres / SQLite 从捕获的 WAL 恢复。
use-cases / branch-computers-like-git / branch

分支是一个 HTTP 调用

快照是命名的别名点。/copy 从任何一个快照启动独立容器——相同的数据,分叉的时间线。

iterm
# 1) 标记分支点。
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/snapshots" \
  -H "Authorization: Bearer $HOODY_TOKEN" \
  -d '["alias": "pre-migration", "expiry": 30]'

# 2) 就地恢复——将此容器恢复到快照。
curl -X PATCH "https://api.hoody.com/api/v1/containers/$CID/snapshots/pre-migration" \
  -H "Authorization: Bearer $HOODY_TOKEN"

# 3) 分叉——从相同快照生成独立容器。
curl -X POST "https://api.hoody.com/api/v1/containers/$CID/copy" \
  -H "Authorization: Bearer $HOODY_TOKEN" \
  -d '["target_project_id":"prod","name":"experiment-a","source_snapshot":"pre-migration"]'

恢复就地还原。复制创建独立容器,存在于自己的时间线——不同的 ID、不同的时间线、原始容器继续运行。无论哪种方式,都是有界的;存储是增量的,所以成本低廉。

恢复流程恢复窗口 · 5 到 15 秒
0110:00快照已创建
0210:14迁移爆炸
0310:14:08已恢复
use-cases / branch-computers-like-git / powers

分支模型解锁的功能

三个工作流,用 VM 快照不太实用,用 docker commit 不可能。

  1. 01

    并行实验

    通过 /copy 从相同快照生成 N 个容器——尝试三种迁移策略并行,保留赢家。

  2. 02

    每次冒险部署前进行试飞

    在任何破坏性更改前 POST 快照。7 秒恢复是你整个机器的撤销按钮。

  3. 03

    持久化时间线

    别名是命名的分支点。snapshot_count 在容器 API 中。存储是增量的,所以保留数十个成本低廉。

use-cases / branch-computers-like-git / replaces

这替代了什么

如果你依赖任何这些来从坏的更改恢复,快照模型在 5-15 秒内用一个 HTTP 调用做相同的工作。

  • vm-snapshots分钟级创建,每个快照 GB 磁盘
  • vagrant本地盒子,无共享状态,无远程恢复
  • docker commit仅文件系统,无进程 / 无内存
  • manual backupsrsync + 没人读的维基页面
  • pg_dump cycles仅数据库,剩余盒子处于坏状态中期
  • rebuild from scratch30+ 分钟,打破编辑器会话
use-cases / branch-computers-like-git / cta

Git 给你代码分支。Hoody 给你整个计算机的分支。

阅读快照 API
use-cases / branch-computers-like-git / related

阅读其他内容