Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 34 additions & 3 deletions docs/template/base-image.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,33 @@ template = Template(

## Defining base image

Every template starts with a base image that provides the foundation for your sandbox environment.
Every template starts with a base image that provides the foundation for your sandbox environment. E2B identifies the image's distribution from its `/etc/os-release`.

**Supported:** Debian/Ubuntu, Fedora and the RHEL family (including Rocky Linux and AlmaLinux), Arch, and Alpine.

**Not supported:**

- Images with no identifiable distribution (no `/etc/os-release`), such as `scratch`, distroless, or pure `nixos/nix`.
- Minimal images missing required packages, such as RHEL UBI-minimal with restricted repositories.

Unsupported images fail the build with a clear error naming the reason.

<Warning>
E2B currently supports only Debian-based images. Your base image must be Debian or a Debian derivative (e.g., `debian`, `ubuntu`, `python`, `node`). Alpine, RedHat-based, and other non-Debian distributions are not supported.
For NixOS, use the official [`e2bdev/nixos`](#nixos-base-image) image instead of a raw NixOS image.
</Warning>

### Predefined base images

Use convenience methods for common base images with Ubuntu, Debian, Python, Node.js, or Bun:
Use convenience methods for common base images with Ubuntu, Debian, Fedora, Alpine, Arch, Python, Node.js, or Bun:

<CodeGroup>

```typescript JavaScript & TypeScript
template.fromUbuntuImage("22.04"); // ubuntu:22.04
template.fromDebianImage("stable-slim"); // debian:stable-slim
template.fromFedoraImage("44"); // fedora:44
template.fromAlpineImage("3.24"); // alpine:3.24
template.fromArchImage("base-devel"); // archlinux:base-devel
Comment thread
tomassrnka marked this conversation as resolved.
template.fromPythonImage("3.13"); // python:3.13
template.fromNodeImage("lts"); // node:lts
template.fromBunImage("1.3"); // oven/bun:1.3
Expand All @@ -52,6 +64,9 @@ template.fromBunImage("1.3"); // oven/bun:1.3
```python Python
template.from_ubuntu_image("22.04") # ubuntu:22.04
template.from_debian_image("stable-slim") # debian:stable-slim
template.from_fedora_image("44") # fedora:44
template.from_alpine_image("3.24") # alpine:3.24
template.from_arch_image("base-devel") # archlinux:base-devel
template.from_python_image("3.13") # python:3.13
template.from_node_image("lts") # node:lts
template.from_bun_image("1.3") # oven/bun:1.3
Expand Down Expand Up @@ -93,6 +108,22 @@ template.from_base_image() # e2bdev/base

`base` is also the template used when you call `Sandbox.create()` without specifying one. It is Debian-based and comes with common tooling pre-installed: Python 3, Node.js, Yarn, `git`, `curl`, `build-essential`, and the GitHub CLI (`gh`). For the exact contents, see the public Dockerfile: [`templates/base/e2b.Dockerfile`](https://github.com/e2b-dev/E2B/blob/main/templates/base/e2b.Dockerfile).

### NixOS base image

Arbitrary [NixOS](https://nixos.org/) images (such as `nixos/nix`) aren't supported directly, because they don't expose the `/etc/os-release` metadata E2B needs to identify the distribution. To build NixOS-based sandboxes, use the official `e2bdev/nixos` image, which E2B prepares to work with the sandbox environment:

<CodeGroup>

```typescript JavaScript & TypeScript
template.fromImage("e2bdev/nixos");
```

```python Python
template.from_image("e2bdev/nixos")
```

</CodeGroup>

### Default resources

A sandbox gets its CPU and memory from the template it's built on. A sandbox built from `base` starts with **2 vCPU and 512 MiB of RAM**.
Expand Down