A Cloudflare Container runs your container image in a full Linux environment on Cloudflare's network, alongside a Worker. The Worker handles incoming HTTP requests, while the Container provides the runtime, binaries, and languages your application needs. Together, they let you run Linux workloads without managing the underlying infrastructure.
Run Linux workloads alongside your Worker.
A Worker runs code in an isolated JavaScript environment. A Container runs your image in a full Linux environment, so you can bring custom runtimes and binaries when your application needs them. Each Container instance runs inside its own virtual machine, which isolates it from other workloads. The Worker receives inbound HTTP requests and routes them to the Container, so the Container is not exposed directly to end users.
A request reaches the Worker, which routes it to a Container running inside its own virtual machine. The Worker remains in front of the Container while the Container serves the request.
For more information, refer to Lifecycle of a Container.
Route every request through your Worker.
The request begins at your Worker, which uses the Durable Object layer to identify and reach a Container. This layer coordinates routing and lifecycle behavior, allowing the Container to continue serving requests while it runs. A Container can start when it receives its first request, so the first request may take longer to complete.
A request flows from the client to the Worker and then to a Container. The Worker and Durable Object layer coordinate routing and lifecycle behavior before the Container serves the request. If the Container is not already running, it starts as part of that process.
For more information, refer to Lifecycle of a Container.
Start on demand, then stop when idle.
A Container starts when your application needs it, so the first request can take longer while its environment starts. Once running, it serves requests until it becomes inactive; after an inactivity period, it can stop and release its running resources. When another request arrives, the Container can start again.
The lifecycle begins with a stopped Container and a request that starts it. The Container then serves requests, becomes inactive, and stops again until another request arrives.
For more information, refer to Lifecycle of a Container and Pricing.
Choose resources for your workload.
Container instance sizes let you match resources to your workload. You can choose a predefined size or configure a custom one, with larger sizes providing more CPU, memory, and disk. When choosing a size, consider the resources your application needs and refer to Limits and instance types for the available options and constraints.
For more information, refer to Pricing.
Place instances near users or within constraints.
Cloudflare places Container instances across its network, helping applications serve users from suitable locations. You can constrain placement by region or jurisdiction when your workload has location or data residency requirements. You can also run multiple instances when your application needs more capacity.
to send a request
Instances can run in different Cloudflare locations, and requests can be routed to an available instance. Placement constraints can keep instances within a region or jurisdiction when location matters to your application.
For more information, refer to Placement.
Keep durable data outside the local disk.
Treat a Container's local disk as temporary working space, because data on it can be lost when the Container stops or restarts. For data that must persist, use Durable Object storage or Cloudflare storage bindings such as KV, R2, and D1. Configured outbound handlers let the Container access these bindings and external services without requiring an SDK inside the Container.
A Container can reach Cloudflare storage and external services through configured connections. Its local disk is temporary, while data in durable storage persists beyond the Container's lifecycle.
For more information, refer to Connect to Workers and bindings and Outbound traffic.
When you are ready to build, start with a deployed Container or explore the available guides.
Get started
Guides
- Lifecycle of a Container: the deep dive on deployment, routing, and shutdown.
- Placement: where instances run and how to constrain them.
- Connect to Workers and bindings: reaching Cloudflare resources from a container.
- Limits and instance types and Pricing: sizes, account limits, and billing.
- Rollouts: how new versions roll out across instances.