When to use Docker
Use Docker when:- you are developing Roomote locally
- you are trying Roomote on one trusted host
- task volume is modest enough for the host machine
- you want the fewest external sandbox accounts and credentials
Configuration
Docker does not need provider API credentials. Select Docker during setup or from Settings > Sandboxes. Common env vars:roomote-worker:local automatically. Self-hosted
Compose deployments normally use docker-compose.compute-docker.yml, which
sets the worker image, platform, network, and release path for sibling worker
containers.
For production deployments, prefer an immutable registry-qualified worker image
tag when workers need a published image instead of a local tag.
Resource and network isolation
Every Docker task receives a dedicated bridge network. In Compose deployments, Roomote attaches the API and, when enabled, the optional preview proxy to that network; sibling task containers and datastore containers are not reachable. The controller reconciles replacement API and preview-proxy containers onto running task networks, removes empty task networks periodically, and reaps stale provisioning containers after a restart. Workers default to 2 CPUs, 4 GiB of memory with no additional swap, 512 PIDs, a requested 20 GiB writable-layer quota, and three 10 MiB JSON log files. The variables above can tune those bounds. Writable-layer quotas require a Docker storage driver that supports--storage-opt size. When the driver rejects that
option, Roomote refuses to start the task rather than allowing untrusted code to
consume the host disk. Configure a quota-capable Docker data root. Operators
that enforce an equivalent host-level quota can explicitly set
DOCKER_WORKER_ALLOW_UNBOUNDED_DISK=true; Roomote then logs a warning and
starts without --storage-opt size.
Completed resumable tasks keep their stopped container and writable layer so a
follow-up can restart the same workspace. Roomote retains at most 10 containers
for 24 hours by default. Configure DOCKER_STANDBY_MAX_COUNT and
DOCKER_STANDBY_MAX_AGE_HOURS to change those bounds; a count of 0 disables
Docker standby retention. The five-minute retention sweep removes the oldest
or expired containers and their task networks.
These retention limits are also editable under Settings > Sandboxes > Local
Docker > Advanced settings. Process environment variables take precedence
and appear as locked values in Settings.
The default internet egress policy allows public repository and tool access
while installing immutable blackhole routes for private, shared-address, and
cloud metadata ranges (including AWS/GCP/Azure, Alibaba, and Oracle endpoints).
The task’s own, more-specific network route still reaches its API and preview
proxy peers. In networked self-host deployments, direct connections to the
Docker bridge gateway are also blocked without disrupting its use as the
public-egress next hop. Local development blocks metadata ranges but retains
private and gateway access because its API runs on the host. The worker never
receives the network-administration capability needed to remove the policy. Set
DOCKER_WORKER_EGRESS_POLICY=none for tasks that need only the Roomote API and
preview proxy.
Security notes
Docker sandboxes require the Roomote controller to create and manage worker containers. Production Compose routes those operations through an internal socket proxy that allows only the container, exec, image, and network API sections Roomote needs; the controller does not mount the raw socket. Treat the proxy and Docker host as trusted infrastructure, and do not use Docker sandboxes as a multi-tenant isolation boundary for untrusted operators or repositories.Verify setup
- select Docker as the sandbox provider
- start a small task from an environment
- confirm the task can clone the repository and run a simple command
- open task logs and verify output streams back to Roomote
- check that the worker container stops after the task completes
Common issues
- The worker image is missing. Run the local dev server again, or publish and configure a worker image for self-hosted production.
- The task cannot reach Roomote services. Check
DOCKER_WORKER_NETWORKand the Compose network used by the API and controller. - A worker reports that its disk limit is unsupported. Configure a Docker
storage driver with per-container writable-layer quota support. Only set
DOCKER_WORKER_ALLOW_UNBOUNDED_DISK=truewhen an equivalent host-level quota is already enforced.