Skip to main content
Start with the Runloop Quickstart to use the examples below.
Projects often have dependencies on external services. For example, a project may need to run a database or a message queue. A common pattern is for developers to run these services on their local workstations. This is not ideal since allowing AI agents to access services outside their own container can create security risks. Runloop solves this problem by allowing you to run AI ageints along side Docker-based services all on the same Devbox. We have specific extensible blueprints for running Docker-in-Docker on a Devbox. You can use one of our standard blueprint images to start a devbox or build your own custom, base blueprint for accomplishing this task.

Standard Blueprints

These Blueprints support Docker-in-Docker. When using these blueprints, your Devbox profile is root.
Blueprint NameArchitectureOSLibrary supportDockerfile FROM
runloop/ubuntu-dnd-x86_64x86_64Ubuntu 24.04SlimFROM runloop:runloop/ubuntu-dnd-x86_64
runloop/ubuntu-dnd-arm64ARM64Ubuntu 24.04SlimFROM runloop:runloop/ubuntu-dnd-arm64
runloop/universal-ubuntu-24.04-x86_64-dndx86_64Ubuntu 24.04CompleteFROM runloop:runloop/universal-ubuntu-24.04-x86_64-dnd
runloop/universal-ubuntu-24.04-arm64-dndARM64Ubuntu 24.04CompleteFROM runloop:runloop/universal-ubuntu-24.04-arm64-dnd

Running Docker-in-Docker from a Devbox

# This uses universal-ubuntu-24.04-x86_64-dnd
devbox = await runloop.devbox.create(
    name="docker-in-docker-devbox",
    blueprint_name="runloop/universal-ubuntu-24.04-x86_64-dnd"
)
await devbox.cmd.exec_async("docker run hello-world")

Configuring a Blueprint that supports Docker-in-Docker

# uses ubuntu-dnd.arm64
blueprint = await runloop.blueprint.create(
    name="docker-in-docker-blueprint",
    dockerfile="FROM runloop:runloop/ubuntu-dnd-arm64"
)

devbox = await blueprint.create_devbox(
    name="docker-in-docker-devbox"
)
await devbox.cmd.exec_async("docker run hello-world")