Products · Developer platform
Containers
Enhance your Workers with serverless containers
Pricing and limits
Pricing
As of Nov 3, 2026, from Cloudflare's docs, last updated there Oct 5, 2026. Licensed CC BY 4.0; navigation removed.
vCPU, Memory and Disk
Containers are billed for every 10ms that they are actively running at the following rates, with included monthly usage as part of the $5 USD per month Workers Paid plan:
| Memory | CPU | Disk | |
|---|---|---|---|
| Free | N/A | N/A | |
| Workers Paid | 25 GiB-hours/month included +$0.0000025 per additional GiB-second |
375 vCPU-minutes/month + $0.000020 per additional vCPU-second |
200 GB-hours/month +$0.00000007 per additional GB-second |
You only pay for what you use — charges start when a request is sent to the container or when it is manually started. Charges stop after the container instance goes to sleep, which can happen automatically after a timeout. This makes it easy to scale to zero, and allows you to get high utilization even with bursty traffic.
Memory and disk usage are based on the provisioned resources for the instance type you select, while CPU usage is based on active usage only.
Instance Types
When you deploy a container, you specify an instance type.
The instance type you select will impact your bill — larger instances include more memory and disk, incurring additional costs, and higher CPU capacity, which allows you to incur higher CPU costs based on active usage.
The following instance types are currently available:
| Instance Type | vCPU | Memory | Disk |
|---|---|---|---|
| lite | 1/16 | 256 MiB | 2 GB |
| basic | 1/4 | 1 GiB | 4 GB |
| standard-1 | 1/2 | 4 GiB | 8 GB |
| standard-2 | 1 | 6 GiB | 12 GB |
| standard-3 | 2 | 8 GiB | 16 GB |
| standard-4 | 4 | 12 GiB | 20 GB |
Network Egress
Egress from Containers is priced at the following rates:
| Region | Price per GB | Included Allotment per month |
|---|---|---|
| North America & Europe | $0.025 | 1 TB |
| Oceania, Korea, Taiwan | $0.05 | 500 GB |
| Everywhere Else | $0.04 | 500 GB |
Workers and Durable Objects Pricing
When you use Containers, incoming requests to your containers are handled by your Worker, and each container has its own Durable Object. You are billed for your usage of both Workers and Durable Objects.
Logs and Observability
Containers are integrated with the Workers Logs platform, and billed at the same rate. Refer to Workers Logs pricing for details.
When you turn on observability for your Worker, or configure observability on a specific container, logs from that container will show in both the Containers and Observability sections of the Cloudflare dashboard.
Limits and Instance Types
As of Nov 3, 2026, from Cloudflare's docs, last updated there Nov 2, 2026. Licensed CC BY 4.0; navigation removed.
Note
All instance size maximums and account limits on this page are defaults and can be increased. To request higher limits, contact your account team or Cloudflare Support.
Instance Types
The memory, vCPU, and disk space for Containers are set through instance types. You can use one of six predefined instance types or configure a custom instance type.
| Instance Type | vCPU | Memory | Disk |
|---|---|---|---|
| lite | 1/16 | 256 MiB | 2 GB |
| basic | 1/4 | 1 GiB | 4 GB |
| standard-1 | 1/2 | 4 GiB | 8 GB |
| standard-2 | 1 | 6 GiB | 12 GB |
| standard-3 | 2 | 8 GiB | 16 GB |
| standard-4 | 4 | 12 GiB | 20 GB |
For an application that uses the default scheduling policy, specify the size with the instance_type property in your Worker's Wrangler configuration file. For the durable_object policy, pass the named size to ctx.container.start() with the runtime instance property.
Note
The dev and standard instance types are preserved for backward compatibility and are aliases for lite and standard-1, respectively.
Custom Instance Types
In addition to the predefined instance types, you can configure custom instance types. Field names depend on where you configure the size. Wrangler configuration for the default policy uses vcpu, memory_mib, and disk_mb. A ctx.container.start() call for the durable_object policy uses vcpu, memoryMib, and diskMb.
Refer to the Wrangler configuration documentation or scheduling policy documentation for examples.
Custom instance types have the following constraints:
| Resource | Limit |
|---|---|
| Minimum vCPU | 1 |
| Maximum vCPU | 4 |
| Maximum Memory | 12 GiB |
| Maximum Disk | 20 GB |
| Memory to vCPU ratio | Minimum 3 GiB memory per vCPU |
For workloads requiring less than 1 vCPU, use the predefined instance types such as lite or basic.
Account limits
The following limits apply per account:
| Resource | Limit |
|---|---|
| Concurrent memory | 6 TiB |
| Concurrent vCPU | 1,500 |
| Concurrent disk | 30 TB |
| Image size | Same as instance disk space |
| Total image storage per account | 50 GB 1 |
Outbound HTTP request body size
Cloudflare limits each HTTP request body forwarded from a Container to an external service through an outbound handler to 100 MiB by default.
| Limit | Default |
|---|---|
| Outbound HTTP request body size | 100 MiB (104,857,600 bytes) |
This limit applies to each request body, including encoding and multipart form fields. It does not limit the total size of a file uploaded through separate requests. The destination service can impose additional limits.
The Maximum Upload Size setting for your application's custom domain does not control this limit. A larger upload accepted by your domain can still be rejected when your Container or Durable Object sends it to another service.
For larger uploads, use the destination's multipart or resumable upload API. Keep each request body below the limit. If you already use multipart uploads, reduce the part size. Streaming, HTTP chunked transfer encoding, and multipart/form-data do not bypass the limit on a single request body.
To request a higher outbound limit, contact your account team or Cloudflare Support. Specify that the request concerns outbound HTTP uploads from Containers or Durable Objects. Increases are subject to review.
Include the following information:
- The account ID and Worker name for the affected workload.
- The Container instance ID or Durable Object namespace and ID.
- The destination hostname.
- The failing request body size in bytes and the requested limit.
- The failure timestamp, relevant error logs, and a minimal reproduction.
For upload failures, refer to Troubleshoot outbound uploads.
Snapshot limits
The following limits apply to Container snapshots:
| Resource | Limit |
|---|---|
| Maximum snapshot size | 20 GB |
| Snapshot retention | 30 days from creation or the most recent restore |
Restoring a snapshot refreshes its 30-day time-to-live.
Footnotes
- Delete a tagged container image with
wrangler containers images delete IMAGE:TAGto free up space. If you delete a container image and then roll back your Worker to a previous version, this version may no longer work. ↩
Timeline
November 2026
October 2026
September 2026
- New scheduling policy for Containers to configure image and instance from Durable Objects
Containers now support the durable_object scheduling policy in public beta. This policy lets a Durable Object select the image and instance size for a Container at runtime instead of using one centrally managed configuration for the application. To use custom images, configure the policy and one or more named images in Wrangler: { "containers": [ { "class_name": "AgentComputer", "scheduling_polic…
- Snapshot and restore Container filesystem
Containers now support snapshot APIs in public beta for saving and restoring point-in-time filesystem state. Create a snapshot first, then pass it back to start() to restore files after container sleep, restart, or handoff to another Durable Object. Use snapshotContainer() through the Durable Object Container API to capture the full container filesystem. Create a snapshot from a running Container…
- Custom Container instance types no longer have a disk to memory ratio limit
Containers custom instance types no longer limit disk based on memory. Previously, a custom instance type could have a maximum of 2 GB of disk for each 1 GiB of memory. You can now allocate up to the 20 GB disk maximum to any custom instance type. Use this to run workloads that need more disk than memory, such as workloads with large container images, datasets, or build caches. The maximum image…
- Use Cloudflare Containers with Codex via the OpenAI Agents API
The OpenAI Agents API gives your application access to Codex through an OpenAI-managed API. OpenAI manages sessions, orchestration, context compaction, and recovery while your application provides tools and uses Cloudflare Containers as the execution environment. Cloudflare Containers can now provide self-hosted execution environments for the OpenAI Agents API. The open-source OpenAI Agents API W…
- Configure observability per container application
You can now configure observability for each container application when you deploy Containers with Wrangler. This lets you change logging for one container without changing the rest of your Worker. If you omit containers[].observability, Wrangler uses the top-level observability setting for that container. If you set it, the container setting overrides the top-level setting. Use target_instance_p…
August 2026
- Use FUSE in local Containers development
Miniflare now automatically grants local Containers the Docker privileges required for Filesystem in Userspace (FUSE). This applies to wrangler dev, the Cloudflare Vite plugin, and direct Miniflare use. Miniflare grants these privileges when the local Docker daemon runs inside a virtual machine (VM). This includes Docker engines on macOS and through Windows Subsystem for Linux (WSL). On Linux, Mi…
July 2026
- Use Google Artifact Registry images with Containers
Containers now support Google Artifact Registry ↗︎ images. After you configure credentials, you can use a fully qualified Google Artifact Registry image reference in your Wrangler configuration instead of first pushing the image to Cloudflare Registry. Provide the service account email with --gar-email and pipe the service account JSON key through stdin: cat <PATH_TO_KEY> | npx wrangler container…
June 2026
- exec() is now available for Containers
exec() is now available for Containers. Use this.ctx.container.exec() to start processes inside a running Container, stream standard input and output, inspect exit codes, and signal each process. Call exec() from a class extending Container, or from another Durable Object through this.ctx.container. The associated Container must already be running. This example starts the Container when needed, t…
- Billable usage and budget alerts now in product sidebars
Pay-as-you-go customers can now view billable usage and create budget alerts directly from the product overview pages for Workers & Pages, D1, R2, Workers KV, Queues, Vectorize, Durable Objects, and Containers. A new sidebar widget shows current-period spend and the billing cycle date range, alongside a button to create a budget alert. The widget pulls from the same data as the Billable Usage das…
May 2026
- Wrangler supports SSH ProxyCommand for Containers
Wrangler supports using wrangler containers ssh as an OpenSSH ProxyCommand for Containers. This lets your local SSH client connect to a running Container through Wrangler. ssh -o ProxyCommand="wrangler containers ssh %h" cloudchamber@<INSTANCE_ID> When standard input and output are piped, Wrangler forwards data to the SSH server in the Container. You can also pass --stdio to force this mode. For…
- SSH through Wrangler is now enabled by default for Containers
SSH through Wrangler is now enabled by default for Containers. Previously, you had to set ssh.enabled to true in your Container configuration before you could connect. This change does not expose any publicly accessible ports on your Container. The SSH service is reachable only through wrangler containers ssh, which authenticates against your Cloudflare account. You also need to add an ssh-ed2551…
April 2026
- Container logs page now includes relevant Worker and Durable Object logs
The Container logs page now displays related Worker and Durable Object logs alongside container logs. This co-locates all relevant log events for a container application in one place, making it easier to trace requests and debug issues. You can filter to a single source when you need to isolate Container, Worker, or Durable Object output. For information on configuring container logging, refer to…
- Containers and Sandboxes are now generally available
Cloudflare Containers and Sandboxes are now generally available. Containers let you run more workloads on the Workers platform, including resource-intensive applications, different languages, and CLI tools that need full Linux environments. Since the initial launch of Containers, there have been significant improvements to Containers' performance, stability, and feature set. Some highlights inclu…
- Secure credential injection and dynamic egress policies for Sandboxes
Outbound Workers for Sandboxes and Containers now support zero-trust credential injection, TLS interception, allow/deny lists, and dynamic per-instance egress policies. These features give platforms running agentic workloads full control over what leaves the sandbox, without exposing secrets to untrusted workloads, like user-generated code or coding agents. Credential injection Because outbound h…
- Control where your Containers run with regional and jurisdictional placement
You can now specify placement constraints to control where your Containers run. Constraint Values Use case regions ENAM, WNAM, EEUR, WEUR Geographic placement jurisdiction eu, fedramp Compliance boundaries Use regions to limit placement to specific geographic areas. Use jurisdiction to restrict containers to compliance boundaries — eu maps to European regions (EEUR, WEUR) and fedramp maps to Nort…
March 2026
- Easily connect Containers and Sandboxes to Workers
Containers and Sandboxes now support connecting directly to Workers over HTTP. This allows you to call Workers functions and bindings, like KV or R2, from within the container at specific hostnames. Run Worker code Define an outbound handler to capture any HTTP request or use outboundByHost to capture requests to individual hostnames and IPs. export class MyApp extends Sandbox {} MyApp.outbound =…
- Use Docker Hub images with Containers
Containers now support Docker Hub ↗︎ images. You can use a fully qualified Docker Hub image reference in your Wrangler configuration ↗︎ instead of first pushing the image to Cloudflare Registry. { "containers": [ { // Example: docker.io/cloudflare/sandbox:0.7.18 "image": "docker.io/<NAMESPACE>/<REPOSITORY>:<TAG>", }, ], } [[containers]] image = "docker.io/<NAMESPACE>/<REPOSITORY>:<TAG>" Container…
- SSH into running Container instances
You can now SSH into running Container instances using Wrangler. This is useful for debugging, inspecting running processes, or executing one-off commands inside a Container. To connect, enable wrangler_ssh in your Container configuration and add your ssh-ed25519 public key to authorized_keys: { "containers": [ { "wrangler_ssh": { "enabled": true }, "authorized_keys": [ { "name": "<NAME>", "publi…
- List Container instances with `wrangler containers instances`
A new wrangler containers instances command lists all instances for a given Container application. This mirrors the instances view in the Cloudflare dashboard. The command displays each instance's ID, name, state, location, version, and creation time: wrangler containers instances <APPLICATION_ID> Use the --json flag for machine-readable output, which is also the default format in non-interactive…
February 2026
- Run 15x more Containers with higher resource limits
You can now run more Containers concurrently with significantly higher limits on memory, vCPU, and disk. Limit Previous Limit New Limit Memory for concurrent live Container instances 400GiB 6TiB vCPU for concurrent live Container instances 100 1,500 Disk for concurrent live Container instances 2TB 30TB This 15x increase enables larger-scale workloads on Containers. You can now run 15,000 instance…
- Backup and restore API for Sandbox SDK
Sandboxes now support createBackup() and restoreBackup() methods for creating and restoring point-in-time snapshots of directories. This allows you to restore environments quickly. For instance, in order to develop in a sandbox, you may need to include a user's codebase and run a build step. Unfortunately git clone and npm install can take minutes, and you don't want to run these steps every time…
- Docker-in-Docker support added to Containers and Sandboxes
Sandboxes and Containers now support running Docker for "Docker-in-Docker" setups. This is particularly useful when your end users or agents want to run a full sandboxed development environment. This allows you to: Develop containerized applications with your Sandbox Run isolated test environments for images Build container images as part of CI/CD workflows Deploy arbitrary images supplied at run…
January 2026
- Custom container instance types now available for all users
Custom instance types are now enabled for all Cloudflare Containers users. You can now specify specific vCPU, memory, and disk amounts, rather than being limited to pre-defined instance types. Previously, only select Enterprise customers were able to customize their instance type. To use a custom instance type, specify the instance_type property as an object with vcpu, memory_mib, and disk_mb fie…
November 2025
- Mount R2 buckets in Containers
Containers now support mounting R2 buckets as FUSE (Filesystem in Userspace) volumes, allowing applications to interact with R2 using standard filesystem operations. Common use cases include: Bootstrapping containers with datasets, models, or dependencies for sandboxes and agent environments Persisting user configuration or application state without managing downloads Accessing large static files…
- New CPU Pricing for Containers and Sandboxes
Containers and Sandboxes pricing for CPU time is now based on active usage only, instead of provisioned resources. This means that you now pay less for Containers and Sandboxes. An Example Before and After Imagine running the standard-2 instance type for one hour, which can use up to 1 vCPU, but on average you use only 20% of your CPU capacity. CPU-time is priced at $0.00002 per vCPU-second. Prev…
October 2025
- Larger Container instance types
New instance types provide up to 4 vCPU, 12 GiB of memory, and 20 GB of disk per container instance. Instance Type vCPU Memory Disk lite 1/16 256 MiB 2 GB basic 1/4 1 GiB 4 GB standard-1 1/2 4 GiB 8 GB standard-2 1 6 GiB 12 GB standard-3 2 8 GiB 16 GB standard-4 4 12 GiB 20 GB The dev and standard instance types are preserved for backward compatibility and are aliases for lite and standard-1, res…
September 2025
- Run more Containers with higher resource limits
You can now run more Containers concurrently with higher limits on CPU, memory, and disk. Limit New Limit Previous Limit Memory for concurrent live Container instances 400GiB 40GiB vCPU for concurrent live Container instances 100 20 Disk for concurrent live Container instances 2TB 100GB You can now run 1000 instances of the dev instance type, 400 instances of basic, or 100 instances of standard c…