Using Docker and Docker Compose inside GPU-enabled containers¶
To run containers with dstack, you can use your own Docker image (or the default one) without a need to interact
directly with Docker. However, some existing code may require direct use of Docker or Docker Compose. That's why,
in our latest release, we've added this option.
type: task
name: chat-ui-task
image: dstackai/dind
privileged: true
working_dir: examples/misc/docker-compose
commands:
- start-dockerd
- docker compose up
ports: [9000]
resources:
gpu: 16GB..24GB
How it works¶
To use Docker or Docker Compose with your dstack configuration, set image to dstackai/dind, privileged to
true, and add the start-dockerd command. After this command, you can use Docker or Docker Compose directly.
For dev environments, add start-dockerd as the first command
in the init property.
Dev environment
type: dev-environment
name: vscode-dind
image: dstackai/dind
privileged: true
ide: vscode
init:
- start-dockerd
resources:
gpu: 16GB..24GB
The start-dockerd script is part of the dstackai/dind image, a pre-built image by dstack that enables Docker to run
inside containers.
With this setup, you don’t have to worry about configuration—both Docker and Docker Compose work out of the box and support GPU usage.
Backends
Note that the privileged option is only supported by VM-based backends. This does not include runpod, vastai,
and kubernetes. All other backends support it.
When using it¶
docker compose¶
One of the obvious use cases for this feature is when you need to use Docker Compose. For example, the Hugging Face Chat UI requires a MongoDB database, so using Docker Compose to run it is the easiest way:

docker build¶
Another use case for this feature is when you need to build a custom Docker image using the docker build command.
docker run¶
Last but not least, you can, of course, use the docker run command, for example, if your existing code requires it.
Examples¶
A few examples of using this feature can be found in examples/misc/docker-compose .
Feedback¶
If you find something not working as intended, please be sure to report it to our bug tracker . Your feedback and feature requests are also very welcome on both Discord and the issue tracker .