服务对象与地域限制
PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。
代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。
本文要点
- Cloudflare 在 2026 年 9 月 30 日分别宣布 durable_object 调度策略和 Container 文件系统快照,均标为 public beta;本文将两条公告合并说明,不把它们写成全面正式可用。
- default 策略在 Wrangler 中统一配置镜像与规格;durable_object 策略由每个 Durable Object 在 ctx.container.start() 时选择镜像或快照及实例规格,适合沙盒和代理工作环境。
- 调度策略创建后不可修改。现有应用要换策略,须建新的 Container 应用、Durable Object 类和命名空间,测试后逐个切流;旧命名空间的存储不会自动转移。
- snapshotContainer() 从运行中的容器保存完整文件系统,返回可持久化的 handle;恢复时以 containerSnapshot 调用 start(),不能同时传 image。快照不保存运行中的进程或内存。
- 快照不可变,默认 30 天有效且每次恢复会刷新期限;只支持 durable_object 策略,并绑定创建它的镜像。账户准入、价格与生产稳定性须按账号和后续公告核实。
先区分两条公告与适用范围
Cloudflare 在 2026 年 9 月 30 日发布了<a href="https://developers.cloudflare.com/changelog/post/2026-09-30-durable-object-scheduling-policy/">Durable Object 调度策略公告</a>和<a href="https://developers.cloudflare.com/changelog/post/2026-09-30-snapshots/">容器快照公告</a>。两者都明确是 public beta。前者解决同一应用中不同实例需要不同镜像或规格的问题,后者解决容器休眠、重启或转交另一个 Durable Object 时恢复文件的问题;快照以前者为前提。
<a href="https://developers.cloudflare.com/containers/configuration/scheduling-policy/">调度策略文档</a>列出 default 与 durable_object 两种策略:default 在 Wrangler 配置一个应用级镜像和 instance_type,变更后由平台按应用滚动更新;durable_object 在代码调用 ctx.container.start() 时为每个实例选镜像、快照与规格,已运行实例不会自动跟随镜像映射更新。若所有实例都用相同配置,default 仍是直接的选择。
第 1 步:为新应用配置 durable_object 调度
在 Wrangler 的 containers 条目中设置 scheduling_policy 为 durable_object、指定 class_name,并在 images 下命名 Dockerfile 镜像;Durable Object 绑定和类声明也要对应。部署后,Wrangler 会把命名镜像准备为摘要固定的引用,代码通过 ctx.container.images.base 取得。无需自定义镜像时,文档还提供 cloudflare/debian-trixie 托管镜像,可直接作为 image 启动。完整配置结构见<a href="https://developers.cloudflare.com/containers/configuration/scheduling-policy/">官方示例</a>。
在该类中先检查 ctx.container.running,然后调用 ctx.container.start({ image: ctx.container.images.base, instance: "standard-2", enableInternet: false })。instance 可用 lite、standard-1 至 standard-4;不传时为 lite。自定义规格在运行时代码里使用 memoryMib、diskMb,而 Wrangler 默认策略的 instance_type 使用 memory_mib、disk_mb。start() 在容器就绪前返回,发送请求或 exec() 前应加自己的就绪检查。
该策略不支持 max_instances;运行实例仍计入账户限额。是否开放出站网络由 enableInternet 明确控制,不能把代理接入当成该功能的开通条件。镜像映射更新也不会重启正在运行的实例,升级需要应用代码安排停机与重新启动。
第 2 步:从运行中的容器保存文件系统
按照<a href="https://developers.cloudflare.com/containers/guides/snapshots/">快照指南</a>,在运行中的 Container 上调用 await this.ctx.container.snapshotContainer({ name: "before-upgrade" }),取得普通数据对象形式的快照 handle;将 handle 存在 Durable Object storage,随后也可交给另一个 Durable Object 恢复。保存的是那个时间点的完整容器文件系统,不是正在执行的进程、内存状态或 Durable Object storage 的自动备份。
把快照点放在写入完成且应用状态一致的时刻,并保存对应镜像版本、逻辑容器 ID 与 handle 的映射。快照不可变;从旧快照恢复并继续修改文件后,须再次 snapshotContainer() 才能保留新变化。快照不是跨镜像升级工具:文档说明它绑定生成时的镜像,更新镜像后应从新镜像运行的容器创建新快照。
第 3 步:用 handle 恢复并验证结果
从 storage 读取保存的 containerSnapshot,确认存在后调用 this.ctx.container.start({ containerSnapshot, enableInternet: false })。恢复时 containerSnapshot 与 image 互斥,因为快照本身已确定文件系统镜像;不要把旧 handle 直接套用在新镜像。start() 之后仍应等待容器就绪,再读取测试文件、检查预期数据和应用健康状态。
<a href="https://developers.cloudflare.com/containers/guides/snapshots/">官方保留期说明</a>规定快照有隐式 30 天有效期,每次恢复刷新期限,暂时不能自定义 TTL。为需要长期保留或灾难恢复的文件另设持久存储与备份方案,不要把未被恢复的快照当作永久备份。尤其要测缺失、过期、错误镜像以及重复恢复时的应用行为。
现有应用迁移:创建替代应用后再切流
<a href="https://developers.cloudflare.com/containers/guides/migrate-to-durable-object-scheduling-policy/">Cloudflare 迁移指南</a>明确:现有 Container 应用不能直接修改 scheduling_policy。需要新建应用、新的 Durable Object 类与命名空间,并保留原应用和绑定作回退。若原类继承 @cloudflare/containers 的 Container,新类需要改用 Durable Object Container API,自己补齐原有的端口就绪、代理请求和休眠等辅助行为。
先用测试路由验证镜像、规格、网络出口、入口命令与就绪检查,再按逻辑容器选择旧或新命名空间切流,不能让同一沙盒的请求在两个命名空间随机分流。新命名空间无法读取旧命名空间的 Durable Object storage;有状态业务必须在切流前设计并完成自己的数据迁移。观察期内保留旧路径,回滚时还要处理切流后在新命名空间产生的写入。删除旧应用会删除其容器实例,清理旧 Durable Object 类又会删除其存储,需在确认不再需要后分别处理。
上线前的核对清单与未确认事项
在可用测试账户中逐项确认:Wrangler 能部署新的策略与镜像;每个 Durable Object 按预期选择规格;默认与受限网络出口符合业务需要;保存后的 handle 能在原对象和另一对象恢复;恢复后新写入需要新快照;30 天期限与恢复刷新符合留存目标;现有应用有可操作的切流和回退记录。费用要结合账户当前的 Containers、Durable Objects、存储和网络用量页面核算。
截至北京时间 2026 年 9 月 30 日,官方公告和文档足以确认两项 public beta 的 API 与基本约束,但未在这两条公告中保证所有账户、地区和现有应用均已获得相同入口,也没有为该 beta 给出独立的生产稳定性承诺或完整定价细目。部署前以自己的账号、当前文档和账单页面再核对。本文是 Cloudflare 平台功能指南,不表示 PuppyIP 产品为这些 API 的必要组件。
资料来源
常见问题
快照功能对 default 调度策略可用吗?
不可用。Cloudflare 的快照公告和指南都说明 Container 快照只支持 durable_object 调度策略。现有 default 应用必须新建替代应用并迁移,不能直接切换原应用的策略。
快照会保存容器里的进程和内存吗?
不会。它捕获的是某个时间点的容器文件系统;恢复后应用进程需要重新启动,Durable Object storage 也不由此自动备份。
更新镜像后能继续恢复旧快照吗?
快照绑定创建时的镜像。更新镜像后,应从使用新镜像运行的容器创建新快照;恢复时 containerSnapshot 与 image 不能同时传入。
快照会永久保留吗?
不会。官方文档规定隐式 30 天 TTL,每次恢复刷新期限,目前不能自定 TTL。长期保留需要另行设计持久存储和备份。
把 scheduling_policy 改成 durable_object 再部署就完成迁移吗?
不行。调度策略不可修改,需要新的 Container 应用、Durable Object 类和命名空间;新命名空间不会自动取得旧存储,切流和数据迁移需单独规划。
两项能力已经正式全面可用吗?
两条 2026 年 9 月 30 日官方公告都标为 public beta。具体账户入口、用量限制与费用应在当前 Cloudflare 控制台和官方文档中核对。