常见问题:
要在控制面板中获取日志,包括日志的实时跟踪,请在您的 Worker 的 wrangler 配置中将 observability
切换为 true:
{ "observability": { "enabled": true }}
[observability]enabled = true
日志受到与 Worker 日志相同的限制,这意味着它们 在免费计划上保留 3 天,在付费计划上保留 7 天。
有关成本详细信息,请参阅 Workers 日志定价。
如果您是企业用户,您可以通过 Logpush 将容器日志导出到您的首选目标。
最初部署容器时,Cloudflare 将选择我们 网络中的各个位置来部署实例。这些位置将跨越多个地区。
当使用 this.ctx.container.start
请求容器实例时,将从预初始化位置中选择最近的空闲
容器实例。这可能
会在与外部请求相同的地区,但可能不是。一旦容器
实例运行,任何未来的请求都将路由到初始位置。
示例:
- 用户部署了一个容器。Cloudflare 自动在其网络中准备实例。
- 来自阿根廷巴里洛切的客户端发出请求。它到达了 阿根廷内乌肯 Cloudflare 位置的 Worker。
- 此 Worker 请求调用
MY_CONTAINER.get("session-1337")
,这会启动一个 Durable Object,然后调用this.ctx.container.start
。 - 这请求最近的空闲容器实例。
- Cloudflare 识别出阿根廷布宜诺斯艾利斯有一个空闲实例,并 在那里启动它。
- 另一个用户需要路由到同一个容器。这个用户的请求到达了 在圣地亚哥运行的 Cloudflare 位置的 Worker。
- Worker 再次调用
MY_CONTAINER.get("session-1337")
。 - 如果初始容器实例仍在运行,请求将路由到 布宜诺斯艾利斯的位置。如果初始容器已进入睡眠状态,Cloudflare 将再次 尝试找到最近的"空闲"容器实例,可能 是北美的一个,并在那里启动实例。
当您运行 wrangler deploy
时,Worker 代码会立即更新,容器
实例使用滚动部署策略更新。容器实例默认按批次更新,一次更新 25% 的实例。
当容器实例准备停止时,它会收到 SIGTERM
信号,这
允许它优雅地关闭。如果实例在 15 分钟内没有停止,
它会被 SIGKILL
信号强制停止。如果您有必须在
容器实例停止之前发生的清理,您应该在此期间完成。
停止后,实例将被运行更新代码的新实例替换。当 新实例启动时,请求将在容器启动期间挂起。
有关详细信息,请参阅扩展和路由文档。
冷启动是指从完全停止状态启动容器实例。
如果您使用全新的 ID 调用 env.MY_CONTAINER.get(id)
并第一次启动
此实例,它将导致冷启动。
这将从其入口点首次启动容器镜像。根据 此入口点的功能,启动将需要可变的时间。
容器冷启动通常在 2-3 秒范围内,但这取决于 镜像大小和代码执行时间等因素。
有关详细信息,请参阅镜像管理文档。
所有磁盘都是临时的。当容器实例进入睡眠状态时,下次 启动时,它将拥有由其容器镜像定义的全新磁盘。
持久磁盘是 Cloudflare 团队正在探索的未来功能,但 不计划在近期推出。
如果您内存不足,您的实例将抛出内存不足 (OOM) 错误并 将重新启动。
容器不使用交换内存。
Cloudflare 不会在特定时间后主动关闭容器实例。如果您没有在容器类上设置 sleepAfter
,或手动停止实例,它将继续运行,除非其主机服务器重新启动。这
发生在不规则的节奏上,但频繁到足以让 Cloudflare 不
保证任何实例将运行任何设定的时间。
当容器实例将要关闭时,它会收到 SIGTERM
信号,
然后在 15 分钟后收到 SIGKILL
信号。您应该执行任何必要的
清理以确保在此时间内优雅关闭。容器实例
将在此后不久在其他地方重新启动。
您可以使用 Worker 密钥 或 密钥存储 为您的 Workers 定义密钥。
然后您可以使用 envVars
属性将这些密钥传递给您的容器:
class MyContainer extends Container { defaultPort = 5000; envVars = { MY_SECRET: this.env.MY_SECRET, };}
或者在 Durable Object 上启动容器实例时:
this.ctx.container.start({ env: { MY_SECRET: this.env.MY_SECRET, },});
有关详细信息,请参阅环境变量和密钥示例。
启动容器时,您可以指定 enableInternet
,这将切换
互联网访问开启或关闭。
要禁用它,请在您的容器类上配置它:
class MyContainer extends Container { defaultPort = 7000; enableInternet = false;}
或者在 Durable Object 上启动容器实例时:
this.ctx.container.start({ enableInternet: false,});
- @2025 Cloudflare Ubitools
- Cf Repo