Container
Overview
Section titled “Overview”A Container resource lets you create and configure Docker containers that make up your lab environment. Containers provide the compute layer of your sandbox, allowing you to run applications, services, and tools that participants will use during hands-on exercises.
Through the UI, you can define container settings such as the image, startup commands, exposed ports, and environment variables — all without needing to write configuration files. You can also connect containers to networks, manage how they interact within the lab, and make them accessible through terminal tabs for users to interact with directly.
Containers make it easy to design flexible, interactive environments that replicate real-world systems and support a wide range of lab scenarios.
Creating a Container resource
Section titled “Creating a Container resource”Container resources can be created in the Sandbox tab. To create a new Container resource, navigate to the Sandbox tab and click the + button. Select Container from the dropdown menu.

Start by naming the container. Note that this is an internal name. You can assign a variety of settings to your container, but you also have the option to use a preset. Presets are pre-configured images for common container setups that can help you get started quickly. You can choose a preset from the Select preset dropdown menu:

Alternatively, you can select your own public or private image. By selecting “Add a new public or private image on GCP” you can add a custom image in the input.
For more advanced configuration options, you can check the Advanced configuration section below.
Editing a container resource
Section titled “Editing a container resource”To edit a container resource, you can select it from the list of existing sandboxes in the Sandbox tab. Click on the container you want to edit, make your changes in the configuration panel, and then click Add changes to save your updates.
Advanced configuration
Section titled “Advanced configuration”| Field | Required? | Default | Description |
|---|---|---|---|
| Image | ✓ | Docker image for the container | |
| Entrypoint | Override the default entrypoint | ||
| Command | Command to run in the container | ||
| Environment | Environment variables | ||
| Command | Select a network for the container | ||
| Environment Variables | Key-value pairs for environment variables | ||
| Labels | Key-value pairs for container labels | ||
| DNS | Configure DNS settings for the container |
| Field | Required? | Default | Description |
|---|---|---|---|
| Local | ✓ | Local port on the host machine | |
| Host | Port inside the container | ||
| Protocol | Default | Protocol type (TCP/UDP). Default is TCP. |
Ports range
Section titled “Ports range”| Field | Required? | Default | Description |
|---|---|---|---|
| Range | ✓ | Range of ports on the host (e.g. 3000-3010) | |
| Enable host | false | Enable host port mapping | |
| Protocol | Default | Protocol type (TCP/UDP). Default is TCP |
Volume
Section titled “Volume”| Field | Required? | Default | Description |
|---|---|---|---|
| Source | ✓ | Source path on the host machine | |
| Destination | ✓ | Destination path inside the container | |
| Type | bind | Type of volume (bind/volume/tmpfs) | |
| Read Only | false | Mount the volume as read-only | |
| Bind propagation | Bind mount propagation settings | ||
| SELinux relabel | SELinux relabeling settings |
Health check
Section titled “Health check”| Field | Required? | Default | Description |
|---|---|---|---|
| Timeout | 30s | Command to test container health |
Healthcheck (HTTP)
Section titled “Healthcheck (HTTP)”| Field | Required? | Default | Description |
|---|---|---|---|
| Address | ✓ | Healthcheck URL | |
| Method | GET | HTTP method | |
| Body | Request body | ||
| Headers | HTTP headers | ||
| Success codes | 200 | Expected success codes |
Healthcheck (TCP)
Section titled “Healthcheck (TCP)”| Field | Required? | Default | Description |
|---|---|---|---|
| Address | ✓ | Healthcheck address |
Healthcheck (Exec)
Section titled “Healthcheck (Exec)”| Field | Required? | Default | Description |
|---|---|---|---|
| Command | Healthcheck command | ||
| Script | Healthcheck script | ||
| Exit code | 0 | Expected exit code |
Network
Section titled “Network”| Field | Required? | Default | Description |
|---|---|---|---|
| Network ID | ✓ | Select the network for the container | |
| IP Address | Static IP address for the container | ||
| Aliases | Network aliases for the container |
Resources
Section titled “Resources”| Field | Required? | Default | Description |
|---|---|---|---|
| CPU | CPU and memory limits | ||
| CPU Pin | Pin CPU cores to the container | ||
| Memory | 256 | Memory limits | |
| GPU Driver | GPU settings for the container | ||
| GPU Device IDs | GPU device ID for the container | ||
| Privileged | Run the container in privileged mode | ||
| Max Restarts Count | 0 | Maximum number of restarts for the container |
Capabilities
Section titled “Capabilities”| Field | Required? | Default | Description |
|---|---|---|---|
| Add | Add capabilities to the container | ||
| Drop | Drop capabilities from the container |
Run as
Section titled “Run as”| Field | Required? | Default | Description |
|---|---|---|---|
| User | root | User to run the container as | |
| Group | root | Group to run the container as |
Summary
Section titled “Summary”The Container resource serves as the core compute component of your sandbox, enabling you to run the applications, services, and tools used in hands-on labs. You can easily create and configure containers through the UI by choosing a preset image or defining your own, setting startup commands, ports, and environment variables — all without writing configuration files.
For more granular control, containers can also be fine-tuned using advanced configuration options such as volumes, health checks, networks, and resource limits.
Overall, container resources make it simple to build flexible, interactive environments that closely replicate real-world systems and provide an engaging learning experience.