此页面描述了 Cloudflare 容器的架构。
在您部署使用容器的 Worker 后,您的镜像会上传到
Cloudflare 的注册表 并全球分发到 Cloudflare 的网络。
Cloudflare 将在全球范围内预调度实例并预获取镜像,以确保在扩展并发容器实例数量时快速启动。这允许您调用
env.YOUR_CONTAINER.get(id)
并快速获得新实例,而无需担心
底层扩展。
当发出启动新容器实例的请求时,将选择最近的具有预获取镜像的位置。对同一实例的后续请求, 无论它们来自何处,只要实例保持活动状态,都将路由到此位置。
启动额外的容器实例将使用其他具有预获取镜像的位置, Cloudflare 将自动开始在后台准备额外的机器, 以便进行额外扩展和快速冷启动。由于预热位置数量有限, 一些容器实例可能会在距离最终用户较远的位置启动。 这样做是为了确保容器实例快速启动。您只需为主动运行的实例付费,而不是为任何未使用的预热镜像付费。
每个容器实例都在自己的 VM 中运行,这提供了与
Cloudflare 网络上运行的其他工作负载的强隔离。容器
应该为 linux/amd64
架构构建,并且应该保持在
大小限制 内。日志记录、指标收集和
网络会在每个容器上自动设置。
当向任何 Worker(包括具有关联容器的 Worker)发出请求时,它通常由 与请求用户之间具有最佳延迟的位置的数据中心处理。 如果智能放置 开启,或者最近的位置负载过重,可能会选择不同的数据中心来优化整体延迟。
当向容器实例发出请求时,它通过 Durable Object 发送,该对象
可以通过使用 DurableObject
或 Container
类 来定义,后者
使用容器特定的 API 和帮助程序扩展 Durable Objects。我们建议使用 Container
,请参阅
Container
类文档 了解更多详细信息。
每个 Durable Object 是一个全局可路由的隔离沙箱,可以执行代码并存储状态。这允许 开发者轻松地寻址和路由到特定的容器实例(无论它们放置在何处), 定义并在容器状态更改时运行钩子,对实例执行定期检查,以及存储与每个实例关联的持久状态。
如上所述,当容器实例启动时,它在最近的预热位置启动。这意味着 容器中的代码通常在与处理 Workers 请求的位置不同的位置执行。
由于所有容器请求都通过 Worker 传递,最终用户无法向容器实例发出 TCP 或 UDP 请求。如果您有需要来自最终用户的入站 TCP 或 UDP 的用例,请告知我们 ↗。
- @2025 Cloudflare Ubitools
- Cf Repo