<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Cloudflare changelogs | Containers</title><description>Cloudflare changelogs for Containers</description><link>https://developers.cloudflare.com/changelog/</link><item><title>Containers - Easily connect Containers and Sandboxes to Workers</title><link>https://developers.cloudflare.com/changelog/post/2026-03-26-outbound-workers/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-03-26-outbound-workers/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/containers/&quot;&gt;Containers&lt;/a&gt; and &lt;a href=&quot;https://developers.cloudflare.com/sandbox/&quot;&gt;Sandboxes&lt;/a&gt; now support connecting directly to Workers over HTTP. This allows you to call Workers
functions and &lt;a href=&quot;https://developers.cloudflare.com/workers/runtime-apis/bindings/&quot;&gt;bindings&lt;/a&gt;, like &lt;a href=&quot;https://developers.cloudflare.com/kv&quot;&gt;KV&lt;/a&gt; or &lt;a href=&quot;https://developers.cloudflare.com/r2/&quot;&gt;R2&lt;/a&gt;, from within the container at specific hostnames.&lt;/p&gt;
&lt;h4&gt;Run Worker code&lt;/h4&gt;
&lt;p&gt;Define an &lt;code&gt;outbound&lt;/code&gt; handler to capture any HTTP request or use &lt;code&gt;outboundByHost&lt;/code&gt; to capture requests to individual hostnames and IPs.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyApp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;extends&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Sandbox&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;MyApp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;outbound&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;// you can run arbitrary functions defined in your Worker on any HTTP request&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;someWorkersFunction&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;MyApp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;outboundByHost&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;my.worker&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;anotherFunction&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;In this example, requests from the container to &lt;code&gt;http://my.worker&lt;/code&gt; will run the function defined within &lt;code&gt;outboundByHost&lt;/code&gt;,
and any other HTTP requests will run the &lt;code&gt;outbound&lt;/code&gt; handler. These handlers run entirely inside the Workers runtime,
outside of the container sandbox.&lt;/p&gt;
&lt;aside&gt;&lt;p&gt;TLS support coming soon&lt;/p&gt;&lt;div&gt;&lt;p&gt;Containers and Sandboxes currently only intercept HTTP traffic. HTTPS interception is coming soon. This will enable using Workers as a transparent proxy for credential injection.&lt;/p&gt;&lt;p&gt;Even though this is just using HTTP, traffic to Workers is secure and runs on the same machine as the container.
If needed, you can also upgrade requests to TLS from the Worker itself.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;h4&gt;Access Workers bindings&lt;/h4&gt;
&lt;p&gt;Each handler has access to &lt;code&gt;env&lt;/code&gt;, so it can call any binding set in &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/configuration/#bindings&quot;&gt;Wrangler config&lt;/a&gt;.
Code inside the container makes a standard HTTP request to that hostname and the outbound Worker translates it into a binding call.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyApp&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;extends&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Sandbox&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;MyApp&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;outboundByHost&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;my.kv&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;key&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;URL&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pathname&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;slice&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;KV&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;key&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Response&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;??&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt; status&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;value&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;404&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;my.r2&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;key&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;URL&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;url&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pathname&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;slice&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;BUCKET&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;key&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;new&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Response&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt;?.&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;??&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt; status&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;object&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;200&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;404&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Now, from inside the container sandbox, &lt;code&gt;curl http://my.kv/some-key&lt;/code&gt; will access &lt;a href=&quot;https://developers.cloudflare.com/kv&quot;&gt;Workers KV&lt;/a&gt; and &lt;code&gt;curl http://my.r2/some-object&lt;/code&gt; will access &lt;a href=&quot;https://developers.cloudflare.com/r2/&quot;&gt;R2&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Access Durable Object state&lt;/h4&gt;
&lt;p&gt;Use &lt;code&gt;ctx.containerId&lt;/code&gt; to reference the container&apos;s automatically provisioned &lt;a href=&quot;https://developers.cloudflare.com/durable-objects&quot;&gt;Durable Object&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;js&quot;&gt;&lt;code class=&quot;language-js&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;class&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;MyContainer&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;extends&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;Container&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;MyContainer&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;outboundByHost&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;get-state.do&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;async&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;MY_CONTAINER&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;idFromString&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;ctx&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;containerId&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stub&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;MY_CONTAINER&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;get&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;stub&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getStateForKey&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;request&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;body&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;This provides an easy way to associate state with any container instance, and includes a &lt;a href=&quot;https://developers.cloudflare.com/durable-objects/get-started/#2-write-a-durable-object-class-using-sql-api&quot;&gt;built-in SQLite database&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Get Started Today&lt;/h4&gt;
&lt;p&gt;Upgrade to &lt;code&gt;@cloudflare/containers&lt;/code&gt; version 0.2.0 or later, or &lt;code&gt;@cloudflare/sandbox&lt;/code&gt; version 0.8.0 or later to use outbound Workers.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/outbound-traffic/&quot;&gt;Containers outbound traffic&lt;/a&gt; and &lt;a href=&quot;https://developers.cloudflare.com/sandbox/guides/outbound-traffic/&quot;&gt;Sandboxes outbound traffic&lt;/a&gt; for more details and examples.&lt;/p&gt;</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers - Use Docker Hub images with Containers</title><link>https://developers.cloudflare.com/changelog/post/2026-03-24-docker-hub-images/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-03-24-docker-hub-images/</guid><description>&lt;p&gt;Containers now support &lt;a href=&quot;https://hub.docker.com/&quot; target=&quot;_blank&quot;&gt;Docker Hub&lt;/a&gt; images. You can use a fully qualified Docker Hub image reference in your &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/configuration/#containers&quot; target=&quot;_blank&quot;&gt;Wrangler configuration&lt;/a&gt; instead of first pushing the image to Cloudflare Registry.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p&gt;wrangler.jsonc&lt;/p&gt;&lt;div&gt;  &lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;jsonc&quot;&gt;&lt;code class=&quot;language-jsonc&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;// Example: docker.io/cloudflare/sandbox:0.7.18&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;image&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;docker.io/&amp;#x3C;NAMESPACE&gt;/&amp;#x3C;REPOSITORY&gt;:&amp;#x3C;TAG&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;],&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;  &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;wrangler.toml&lt;/p&gt;&lt;div&gt;  &lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;toml&quot;&gt;&lt;code class=&quot;language-toml&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;[[&lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt;]]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;image&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;docker.io/&amp;#x3C;NAMESPACE&gt;/&amp;#x3C;REPOSITORY&gt;:&amp;#x3C;TAG&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;  &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;  
&lt;p&gt;Containers also support private Docker Hub images. To configure credentials, refer to &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/image-management/#use-private-docker-hub-images&quot;&gt;Use private Docker Hub images&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/image-management/&quot;&gt;Image management&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers - SSH into running Container instances</title><link>https://developers.cloudflare.com/changelog/post/2026-03-12-ssh-support/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-03-12-ssh-support/</guid><description>&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;To connect, enable &lt;code&gt;wrangler_ssh&lt;/code&gt; in your Container configuration and add your &lt;code&gt;ssh-ed25519&lt;/code&gt; public key to &lt;code&gt;authorized_keys&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p&gt;wrangler.jsonc&lt;/p&gt;&lt;div&gt;  &lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;jsonc&quot;&gt;&lt;code class=&quot;language-jsonc&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;wrangler_ssh&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;enabled&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;authorized_keys&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;#x3C;NAME&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;public_key&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;#x3C;YOUR_PUBLIC_KEY_HERE&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;  &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;wrangler.toml&lt;/p&gt;&lt;div&gt;  &lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;toml&quot;&gt;&lt;code class=&quot;language-toml&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;[[&lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt;]]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;wrangler_ssh&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;enabled&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;true&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;[[&lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;authorized_keys&lt;/span&gt;&lt;span&gt;]]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;#x3C;NAME&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;public_key&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&amp;#x3C;YOUR_PUBLIC_KEY_HERE&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;  &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;  
&lt;p&gt;Then connect with:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;wrangler&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ssh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;#x3C;INSTANCE_ID&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can also run a single command without opening an interactive shell:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;wrangler&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ssh&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;#x3C;INSTANCE_ID&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;ls&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;-al&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Use &lt;code&gt;wrangler containers instances &amp;#x3C;APPLICATION&gt;&lt;/code&gt; to find the instance ID for a running Container.&lt;/p&gt;
&lt;p&gt;For more information, refer to the &lt;a href=&quot;https://developers.cloudflare.com/containers/ssh/&quot;&gt;SSH documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers - List Container instances with `wrangler containers instances`</title><link>https://developers.cloudflare.com/changelog/post/2026-03-12-wrangler-containers-instances/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-03-12-wrangler-containers-instances/</guid><description>&lt;p&gt;A new &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/commands/containers/#containers-instances&quot;&gt;&lt;code&gt;wrangler containers instances&lt;/code&gt;&lt;/a&gt; command lists all instances for a given Container application. This mirrors the instances view in the Cloudflare dashboard.&lt;/p&gt;
&lt;p&gt;The command displays each instance&apos;s ID, name, state, location, version, and creation time:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;wrangler&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;instances&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&amp;#x3C;APPLICATION_ID&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Use the &lt;code&gt;--json&lt;/code&gt; flag for machine-readable output, which is also the default format in non-interactive environments such as CI pipelines.&lt;/p&gt;
&lt;p&gt;For the full list of options, refer to the &lt;a href=&quot;https://developers.cloudflare.com/workers/wrangler/commands/containers/#containers-instances&quot;&gt;&lt;code&gt;containers instances&lt;/code&gt; command reference&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers - Run 15x more Containers with higher resource limits</title><link>https://developers.cloudflare.com/changelog/post/2026-02-25-higher-container-resource-limits/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-02-25-higher-container-resource-limits/</guid><description>&lt;p&gt;You can now run more &lt;a href=&quot;https://developers.cloudflare.com/containers/&quot;&gt;Containers&lt;/a&gt; concurrently with significantly higher limits on memory, vCPU, and disk.&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Limit&lt;/th&gt;&lt;th&gt;Previous Limit&lt;/th&gt;&lt;th&gt;New Limit&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Memory for concurrent live Container instances&lt;/td&gt;&lt;td&gt;400GiB&lt;/td&gt;&lt;td&gt;6TiB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;vCPU for concurrent live Container instances&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;1,500&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Disk for concurrent live Container instances&lt;/td&gt;&lt;td&gt;2TB&lt;/td&gt;&lt;td&gt;30TB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;This 15x increase enables larger-scale workloads on Containers. You can now run 15,000 instances of the &lt;code&gt;lite&lt;/code&gt; instance type, 6,000 instances of &lt;code&gt;basic&lt;/code&gt;, over 1,500 instances of &lt;code&gt;standard-1&lt;/code&gt;, or over 1,000 instances of &lt;code&gt;standard-2&lt;/code&gt; concurrently.&lt;/p&gt;
&lt;p&gt;Refer to &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/limits/&quot;&gt;Limits&lt;/a&gt; for more details on the available instance types and limits.&lt;/p&gt;</description><pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Agents, R2, Containers - Backup and restore API for Sandbox SDK</title><link>https://developers.cloudflare.com/changelog/post/2026-02-23-sandbox-backup-restore-api/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-02-23-sandbox-backup-restore-api/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/sandbox/&quot;&gt;Sandboxes&lt;/a&gt; now support &lt;code&gt;createBackup()&lt;/code&gt; and &lt;code&gt;restoreBackup()&lt;/code&gt; methods for creating and restoring point-in-time snapshots of directories.&lt;/p&gt;
&lt;p&gt;This allows you to restore environments quickly. For instance, in order to develop in a sandbox, you may need to include a user&apos;s codebase and run a build step.
Unfortunately &lt;code&gt;git clone&lt;/code&gt; and &lt;code&gt;npm install&lt;/code&gt; can take minutes, and you don&apos;t want to run these steps every time the user starts their sandbox.&lt;/p&gt;
&lt;p&gt;Now, after the initial setup, you can just call &lt;code&gt;createBackup()&lt;/code&gt;, then &lt;code&gt;restoreBackup()&lt;/code&gt; the next time this environment is needed. This makes it practical to pick up exactly
where a user left off, even after days of inactivity, without repeating expensive setup steps.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;ts&quot;&gt;&lt;code class=&quot;language-ts&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sandbox&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;getSandbox&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Sandbox&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;my-sandbox&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Make non-trivial changes to the file system&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sandbox&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;gitCheckout&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;endUserRepo&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt; targetDir&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;/workspace&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sandbox&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;exec&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;npm install&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt; cwd&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;/workspace&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Create a point-in-time backup of the directory&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;const&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;backup&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sandbox&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;createBackup&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt; dir&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;/workspace&quot;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Store the handle for later use&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;env&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;KV&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;put&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;`backup:&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;userId&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;JSON&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;stringify&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;backup&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// ... in a future session...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;// Restore instead of re-cloning and reinstalling&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;sandbox&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;restoreBackup&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;backup&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Backups are stored in &lt;a href=&quot;https://developers.cloudflare.com/r2&quot;&gt;R2&lt;/a&gt; and can take advantage of &lt;a href=&quot;https://developers.cloudflare.com/sandbox/guides/backup-restore/#configure-r2-lifecycle-rules-for-automatic-cleanup&quot;&gt;R2 object lifecycle rules&lt;/a&gt; to ensure they do not persist forever.&lt;/p&gt;
&lt;p&gt;Key capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Persist and reuse across sandbox sessions&lt;/strong&gt; — Easily store backup handles in KV, D1, or Durable Object storage for use in subsequent sessions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usable across multiple instances&lt;/strong&gt; — Fork a backup across many sandboxes for parallel work&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Named backups&lt;/strong&gt; — Provide optional human-readable labels for easier management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TTLs&lt;/strong&gt; — Set time-to-live durations so backups are automatically removed from storage once they are no longer neeeded&lt;/li&gt;
&lt;/ul&gt;
&lt;aside&gt;&lt;p&gt;Note&lt;/p&gt;&lt;div&gt;&lt;p&gt;Backup and restore currently uses a FUSE overlay. Soon, native snapshotting at a lower level will be added to Containers and Sandboxes, improving speed and ergonomics. The current backup functionality provides a significant speed improvement over manually recreating a file system, but it will be further optimized in the future. The new snapshotting system will use a similar API, so changing to this system will be simple once it is available.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;To get started, refer to the &lt;a href=&quot;https://developers.cloudflare.com/sandbox/guides/backup-restore/&quot;&gt;backup and restore guide&lt;/a&gt; for setup instructions and usage patterns, or the &lt;a href=&quot;https://developers.cloudflare.com/sandbox/api/backups/&quot;&gt;Backups API reference&lt;/a&gt; for full method documentation.&lt;/p&gt;</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate><product>Agents</product><category>Agents</category><category>R2</category><category>Containers</category></item><item><title>Containers - Docker-in-Docker support added to Containers and Sandboxes</title><link>https://developers.cloudflare.com/changelog/post/2026-02-17-docker-in-docker/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-02-17-docker-in-docker/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/sandbox/&quot;&gt;Sandboxes&lt;/a&gt; and &lt;a href=&quot;https://developers.cloudflare.com/containers/&quot;&gt;Containers&lt;/a&gt; now support running Docker for &quot;Docker-in-Docker&quot; setups. This is particularly useful when your end users or &lt;a href=&quot;https://developers.cloudflare.com/agents&quot;&gt;agents&lt;/a&gt; want to run a full sandboxed development environment.&lt;/p&gt;
&lt;p&gt;This allows you to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Develop containerized applications with your Sandbox&lt;/li&gt;
&lt;li&gt;Run isolated test environments for images&lt;/li&gt;
&lt;li&gt;Build container images as part of CI/CD workflows&lt;/li&gt;
&lt;li&gt;Deploy arbitrary images supplied at runtime within a container&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For &lt;a href=&quot;https://developers.cloudflare.com/sandbox/&quot;&gt;Sandbox SDK&lt;/a&gt; users, see the &lt;a href=&quot;https://developers.cloudflare.com/sandbox/guides/docker-in-docker/&quot;&gt;Docker-in-Docker guide&lt;/a&gt; for instructions on combining Docker with the SandboxSDK. For general Containers usage, see the &lt;a href=&quot;https://developers.cloudflare.com/containers/faq/#can-i-run-docker-inside-a-container-docker-in-docker&quot;&gt;Containers FAQ&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers - Custom container instance types now available for all users</title><link>https://developers.cloudflare.com/changelog/post/2026-01-05-custom-instance-types/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2026-01-05-custom-instance-types/</guid><description>&lt;p&gt;Custom instance types are now enabled for all &lt;a href=&quot;https://developers.cloudflare.com/containers&quot;&gt;Cloudflare Containers&lt;/a&gt; users. You can now specify specific vCPU, memory, and disk amounts, rather than being limited to pre-defined &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/limits/#instance-types&quot;&gt;instance types&lt;/a&gt;. Previously, only select Enterprise customers were able to customize their instance type.&lt;/p&gt;
&lt;p&gt;To use a custom instance type, specify the &lt;code&gt;instance_type&lt;/code&gt; property as an object with &lt;code&gt;vcpu&lt;/code&gt;, &lt;code&gt;memory_mib&lt;/code&gt;, and &lt;code&gt;disk_mb&lt;/code&gt; fields in your Wrangler configuration:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;toml&quot;&gt;&lt;code class=&quot;language-toml&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;[[&lt;/span&gt;&lt;span&gt;containers&lt;/span&gt;&lt;span&gt;]]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;image&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;./Dockerfile&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;instance_type&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;vcpu&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;memory_mib&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;6144&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;disk_mb&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;12000&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Individual limits for custom instance types are based on the &lt;code&gt;standard-4&lt;/code&gt; instance type (4 vCPU, 12 GiB memory, 20 GB disk). You must allocate at least 1 vCPU for custom instance types. For workloads requiring less than 1 vCPU, use the predefined instance types like &lt;code&gt;lite&lt;/code&gt; or &lt;code&gt;basic&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/limits/#custom-instance-types&quot;&gt;limits documentation&lt;/a&gt; for the full list of constraints on custom instance types.
See the &lt;a href=&quot;https://developers.cloudflare.com/containers/get-started/&quot;&gt;getting started guide&lt;/a&gt; to deploy your first Container,&lt;/p&gt;</description><pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers, R2 - Mount R2 buckets in Containers</title><link>https://developers.cloudflare.com/changelog/post/2025-11-21-fuse-support-in-containers/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2025-11-21-fuse-support-in-containers/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/containers/&quot;&gt;Containers&lt;/a&gt; now support mounting R2 buckets as FUSE (Filesystem in Userspace) volumes, allowing applications to interact with &lt;a href=&quot;https://developers.cloudflare.com/r2/&quot;&gt;R2&lt;/a&gt; using standard filesystem operations.&lt;/p&gt;
&lt;p&gt;Common use cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bootstrapping containers with datasets, models, or dependencies for &lt;a href=&quot;https://developers.cloudflare.com/sandbox/&quot;&gt;sandboxes&lt;/a&gt; and &lt;a href=&quot;https://developers.cloudflare.com/agents/&quot;&gt;agent&lt;/a&gt; environments&lt;/li&gt;
&lt;li&gt;Persisting user configuration or application state without managing downloads&lt;/li&gt;
&lt;li&gt;Accessing large static files without bloating container images or downloading at startup&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;FUSE adapters like &lt;a href=&quot;https://github.com/tigrisdata/tigrisfs&quot; target=&quot;_blank&quot;&gt;tigrisfs&lt;/a&gt;, &lt;a href=&quot;https://github.com/s3fs-fuse/s3fs-fuse&quot; target=&quot;_blank&quot;&gt;s3fs&lt;/a&gt;, and &lt;a href=&quot;https://github.com/GoogleCloudPlatform/gcsfuse&quot; target=&quot;_blank&quot;&gt;gcsfuse&lt;/a&gt; can be installed in your container image and configured to mount buckets at startup.&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;pre data-language=&quot;dockerfile&quot;&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;FROM&lt;/span&gt;&lt;span&gt; alpine:3.20&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Install FUSE and dependencies&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;RUN&lt;/span&gt;&lt;span&gt; apk update &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;apk add --no-cache ca-certificates fuse curl bash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Install tigrisfs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;RUN&lt;/span&gt;&lt;span&gt; ARCH=$(uname -m) &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if [ &lt;/span&gt;&lt;span&gt;&quot;$ARCH&quot;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;x86_64&quot;&lt;/span&gt;&lt;span&gt; ]; then ARCH=&lt;/span&gt;&lt;span&gt;&quot;amd64&quot;&lt;/span&gt;&lt;span&gt;; fi &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;if [ &lt;/span&gt;&lt;span&gt;&quot;$ARCH&quot;&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;&quot;aarch64&quot;&lt;/span&gt;&lt;span&gt; ]; then ARCH=&lt;/span&gt;&lt;span&gt;&quot;arm64&quot;&lt;/span&gt;&lt;span&gt;; fi &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;VERSION=$(curl -s https://api.github.com/repos/tigrisdata/tigrisfs/releases/latest | grep -o &lt;/span&gt;&lt;span&gt;&apos;&quot;tag_name&quot;: &quot;[^&quot;]*&apos;&lt;/span&gt;&lt;span&gt; | cut -d&lt;/span&gt;&lt;span&gt;&apos;&quot;&apos;&lt;/span&gt;&lt;span&gt; -f4) &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;curl -L &lt;/span&gt;&lt;span&gt;&quot;https://github.com/tigrisdata/tigrisfs/releases/download/${VERSION}/tigrisfs_${VERSION#v}_linux_${ARCH}.tar.gz&quot;&lt;/span&gt;&lt;span&gt; -o /tmp/tigrisfs.tar.gz &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;tar -xzf /tmp/tigrisfs.tar.gz -C /usr/local/bin/ &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;rm /tmp/tigrisfs.tar.gz &amp;#x26;&amp;#x26; \&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;chmod +x /usr/local/bin/tigrisfs&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Create startup script that mounts bucket&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;RUN&lt;/span&gt;&lt;span&gt; printf &lt;/span&gt;&lt;span&gt;&apos;#!/bin/sh&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;set -e&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;mkdir -p /mnt/r2&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;R2_ENDPOINT=&quot;https://${R2_ACCOUNT_ID}.r2.cloudflarestorage.com&quot;&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;/usr/local/bin/tigrisfs --endpoint &quot;${R2_ENDPOINT}&quot; -f &quot;${BUCKET_NAME}&quot; /mnt/r2 &amp;#x26;&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;sleep 3&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;ls -lah /mnt/r2&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;\&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&apos;&lt;/span&gt;&lt;span&gt; &gt; /startup.sh &amp;#x26;&amp;#x26; chmod +x /startup.sh&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;CMD&lt;/span&gt;&lt;span&gt; [&lt;/span&gt;&lt;span&gt;&quot;/startup.sh&quot;&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;See the &lt;a href=&quot;https://developers.cloudflare.com/containers/examples/r2-fuse-mount/&quot;&gt;Mount R2 buckets with FUSE&lt;/a&gt; example for a complete guide on mounting R2 buckets and/or other S3-compatible storage buckets within your containers.&lt;/p&gt;</description><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category><category>R2</category></item><item><title>Containers - New CPU Pricing for Containers and Sandboxes</title><link>https://developers.cloudflare.com/changelog/post/2025-11-21-new-cpu-pricing/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2025-11-21-new-cpu-pricing/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.cloudflare.com/containers/&quot;&gt;Containers&lt;/a&gt; and &lt;a href=&quot;https://developers.cloudflare.com/sandbox/&quot;&gt;Sandboxes&lt;/a&gt; pricing for CPU time is now based on active usage only, instead of provisioned resources.&lt;/p&gt;
&lt;p&gt;This means that you now pay less for Containers and Sandboxes.&lt;/p&gt;
&lt;h4&gt;An Example Before and After&lt;/h4&gt;
&lt;p&gt;Imagine running the &lt;code&gt;standard-2&lt;/code&gt; instance type for one hour, which can use up to 1 vCPU,
but on average you use only 20% of your CPU capacity.&lt;/p&gt;
&lt;p&gt;CPU-time is priced at &lt;em&gt;$0.00002 per vCPU-second&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Previously, you would be charged for the CPU allocated to the instance multiplied by the time it was active, in this case 1 hour.&lt;/p&gt;
&lt;p&gt;CPU cost would have been: &lt;strong&gt;$0.072&lt;/strong&gt; — 1 vCPU * 3600 seconds * $0.00002&lt;/p&gt;
&lt;p&gt;Now, since you are only using 20% of your CPU capacity, your CPU cost is cut to 20% of the previous amount.&lt;/p&gt;
&lt;p&gt;CPU cost is now: &lt;strong&gt;$0.0144&lt;/strong&gt; — 1 vCPU * 3600 seconds * $0.00002 * 20% utilization&lt;/p&gt;
&lt;p&gt;This can significantly reduce costs for Containers and Sandboxes.&lt;/p&gt;
&lt;aside&gt;&lt;p&gt;Note&lt;/p&gt;&lt;div&gt;&lt;p&gt;Memory cost and disk pricing remain unchanged, and is still calculated based on &lt;em&gt;provisioned&lt;/em&gt; resources.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;See the documentation to learn more about &lt;a href=&quot;https://developers.cloudflare.com/containers/get-started/&quot;&gt;Containers&lt;/a&gt;, &lt;a href=&quot;https://developers.cloudflare.com/sandbox/&quot;&gt;Sandboxes&lt;/a&gt;,
and &lt;a href=&quot;https://developers.cloudflare.com/containers/pricing&quot;&gt;associated pricing&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers - Larger Container instance types</title><link>https://developers.cloudflare.com/changelog/post/2025-10-01-new-container-instance-types/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2025-10-01-new-container-instance-types/</guid><description>&lt;p&gt;New instance types provide up to 4 vCPU, 12 GiB of memory, and 20 GB of disk per container instance.&lt;/p&gt;















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Instance Type&lt;/th&gt;&lt;th&gt;vCPU&lt;/th&gt;&lt;th&gt;Memory&lt;/th&gt;&lt;th&gt;Disk&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;lite&lt;/td&gt;&lt;td&gt;1/16&lt;/td&gt;&lt;td&gt;256 MiB&lt;/td&gt;&lt;td&gt;2 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;basic&lt;/td&gt;&lt;td&gt;1/4&lt;/td&gt;&lt;td&gt;1 GiB&lt;/td&gt;&lt;td&gt;4 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;standard-1&lt;/td&gt;&lt;td&gt;1/2&lt;/td&gt;&lt;td&gt;4 GiB&lt;/td&gt;&lt;td&gt;8 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;standard-2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;6 GiB&lt;/td&gt;&lt;td&gt;12 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;standard-3&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;8 GiB&lt;/td&gt;&lt;td&gt;16 GB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;standard-4&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;12 GiB&lt;/td&gt;&lt;td&gt;20 GB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;The &lt;code&gt;dev&lt;/code&gt; and &lt;code&gt;standard&lt;/code&gt; instance types are preserved for backward compatibility and are aliases for &lt;code&gt;lite&lt;/code&gt; and &lt;code&gt;standard-1&lt;/code&gt;, respectively. The &lt;code&gt;standard-1&lt;/code&gt; instance type now provides up to 8 GB of disk instead of only 4 GB.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://developers.cloudflare.com/containers/get-started/&quot;&gt;getting started guide&lt;/a&gt; to deploy your first Container,
and the &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/limits/&quot;&gt;limits documentation&lt;/a&gt; for more details on the available instance types and limits.&lt;/p&gt;</description><pubDate>Wed, 01 Oct 2025 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item><item><title>Containers - Run more Containers with higher resource limits</title><link>https://developers.cloudflare.com/changelog/post/2025-09-24-higher-container-resource-limits/</link><guid isPermaLink="true">https://developers.cloudflare.com/changelog/post/2025-09-24-higher-container-resource-limits/</guid><description>&lt;p&gt;You can now run more Containers concurrently with higher limits on CPU, memory, and disk.&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Limit&lt;/th&gt;&lt;th&gt;New Limit&lt;/th&gt;&lt;th&gt;Previous Limit&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Memory for concurrent live Container instances&lt;/td&gt;&lt;td&gt;400GiB&lt;/td&gt;&lt;td&gt;40GiB&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;vCPU for concurrent live Container instances&lt;/td&gt;&lt;td&gt;100&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Disk for concurrent live Container instances&lt;/td&gt;&lt;td&gt;2TB&lt;/td&gt;&lt;td&gt;100GB&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;You can now run 1000 instances of the &lt;code&gt;dev&lt;/code&gt; instance type, 400 instances of &lt;code&gt;basic&lt;/code&gt;, or 100 instances of &lt;code&gt;standard&lt;/code&gt; concurrently.&lt;/p&gt;
&lt;p&gt;This opens up new possibilities for running larger-scale workloads on Containers.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&quot;https://developers.cloudflare.com/containers/get-started/&quot;&gt;getting started guide&lt;/a&gt; to deploy your first Container,
and the &lt;a href=&quot;https://developers.cloudflare.com/containers/platform-details/limits/&quot;&gt;limits documentation&lt;/a&gt; for more details on the available instance types and limits.&lt;/p&gt;</description><pubDate>Thu, 25 Sep 2025 00:00:00 GMT</pubDate><product>Containers</product><category>Containers</category></item></channel></rss>