diff --git a/docs.json b/docs.json index 92fc6d80..c2860bf9 100644 --- a/docs.json +++ b/docs.json @@ -121,7 +121,8 @@ "docs/template/examples/nextjs-bun", "docs/template/examples/expo", "docs/template/examples/desktop", - "docs/template/examples/claude-code" + "docs/template/examples/claude-code", + "docs/template/examples/docker" ] }, "docs/template/migration-v2", diff --git a/docs/template/examples/docker.mdx b/docs/template/examples/docker.mdx new file mode 100644 index 00000000..718b5e2d --- /dev/null +++ b/docs/template/examples/docker.mdx @@ -0,0 +1,92 @@ +--- +title: "Docker" +description: "Sandbox with Docker installed for running containers" +--- + +## Install Docker + +Use the official installation script from [get.docker.com](https://get.docker.com). The `hello-world` container run validates the installation. + + +```typescript JavaScript & TypeScript +// template.ts +import { Template } from 'e2b' + +export const template = Template() + .fromUbuntuImage('25.04') + .runCmd('curl -fsSL https://get.docker.com | sudo sh') + .runCmd('sudo docker run --rm hello-world') +``` + +```python Python +# template.py +from e2b import Template + +template = ( + Template() + .from_ubuntu_image("25.04") + .run_cmd("curl -fsSL https://get.docker.com | sudo sh") + .run_cmd("sudo docker run --rm hello-world") +) +``` + + +## Build the template + +We recommend at least 2 CPUs and 2 GB of RAM for running Docker containers. **With lower RAM, your sandbox might run out of memory.** + + +```typescript JavaScript & TypeScript +// build.ts +import { Template, defaultBuildLogger } from 'e2b' +import { template as dockerTemplate } from './template' + +Template.build(dockerTemplate, 'docker', { + cpuCount: 2, + memoryMB: 2048, + onBuildLogs: defaultBuildLogger(), +}) +``` + +```python Python +# build.py +from e2b import Template, default_build_logger +from .template import template as dockerTemplate + +Template.build(dockerTemplate, 'docker', + cpu_count=2, + memory_mb=2048, + on_build_logs=default_build_logger(), +) +``` + + +## Run containers + +Run an Alpine container that prints a hello message. + + +```typescript JavaScript & TypeScript +// sandbox.ts +import { Sandbox } from 'e2b' + +const sbx = await Sandbox.create('docker') + +const result = await sbx.commands.run('sudo docker run --rm alpine echo "Hello from Alpine!"') +console.log(result.stdout) + +await sbx.kill() +``` + +```python Python +# sandbox.py +from e2b import Sandbox + +sbx = Sandbox.create('docker') + +result = sbx.commands.run('sudo docker run --rm alpine echo "Hello from Alpine!"') +print(result.stdout) + +sbx.kill() +``` +