Skip to content

Commit ccaa8ce

Browse files
committed
Add Docker template example documentation
Add a new template example showing how to create a sandbox with Docker installed. Uses the official get.docker.com script for installation and validates with hello-world during build.
1 parent c1df0cc commit ccaa8ce

2 files changed

Lines changed: 90 additions & 1 deletion

File tree

docs.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,8 @@
120120
"docs/template/examples/nextjs-bun",
121121
"docs/template/examples/expo",
122122
"docs/template/examples/desktop",
123-
"docs/template/examples/claude-code"
123+
"docs/template/examples/claude-code",
124+
"docs/template/examples/docker"
124125
]
125126
},
126127
"docs/template/migration-v2",

docs/template/examples/docker.mdx

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
title: "Docker"
3+
description: "Sandbox with Docker installed for running containers"
4+
---
5+
6+
Run Docker containers inside the E2B sandbox. Docker daemon is managed by systemd and starts automatically.
7+
8+
## Install Docker
9+
10+
Use the official installation script from [get.docker.com](https://get.docker.com) to set up Docker. The `hello-world` container validates that everything works.
11+
12+
<CodeGroup>
13+
```typescript JavaScript & TypeScript
14+
// template.ts
15+
import { Template } from 'e2b'
16+
17+
export const template = Template()
18+
.fromUbuntuImage('25.04')
19+
.runCmd('curl -fsSL https://get.docker.com | sudo sh')
20+
.runCmd('sudo docker run --rm hello-world')
21+
```
22+
23+
```python Python
24+
# template.py
25+
from e2b import Template
26+
27+
template = (
28+
Template()
29+
.from_ubuntu_image("25.04")
30+
.run_cmd("curl -fsSL https://get.docker.com | sudo sh")
31+
.run_cmd("sudo docker run --rm hello-world")
32+
)
33+
```
34+
</CodeGroup>
35+
36+
## Build and publish
37+
38+
Build the template with enough resources for Docker operations.
39+
40+
<CodeGroup>
41+
```typescript JavaScript & TypeScript
42+
// build.ts
43+
import { Template, defaultBuildLogger } from 'e2b'
44+
import { template as dockerTemplate } from './template'
45+
46+
await Template.build(dockerTemplate, 'e2b-docker-template', {
47+
cpuCount: 2,
48+
memoryMB: 2048,
49+
onBuildLogs: defaultBuildLogger(),
50+
})
51+
```
52+
53+
```python Python
54+
# build.py
55+
from e2b import Template, default_build_logger
56+
from .template import template as dockerTemplate
57+
58+
Template.build(dockerTemplate, 'e2b-docker-template',
59+
cpu_count=2,
60+
memory_mb=2048,
61+
on_build_logs=default_build_logger(),
62+
)
63+
```
64+
</CodeGroup>
65+
66+
## Run containers
67+
68+
Spin up a sandbox and run any Docker image you need.
69+
70+
<CodeGroup>
71+
```typescript JavaScript & TypeScript
72+
import { Sandbox } from 'e2b'
73+
74+
const sandbox = await Sandbox.create('e2b-docker-template', { timeoutMs: 60_000 })
75+
76+
const result = await sandbox.commands.run('sudo docker run --rm alpine echo "Hello from Alpine!"')
77+
console.log(result.stdout)
78+
```
79+
80+
```python Python
81+
from e2b import Sandbox
82+
83+
sandbox = Sandbox.create('e2b-docker-template', timeout=60)
84+
85+
result = sandbox.commands.run('sudo docker run --rm alpine echo "Hello from Alpine!"')
86+
print(result.stdout)
87+
```
88+
</CodeGroup>

0 commit comments

Comments
 (0)