--- display_name: Devcontainers (Docker) description: Provision envbuilder containers as Coder workspaces icon: ../../../site/static/icon/docker.png maintainer_github: coder verified: true tags: [container, docker, devcontainer] --- # Remote Development on Docker Containers (with Devcontainers) Provision Docker containers as [Coder workspaces](https://coder.com/docs/coder-v2/latest) with this example template. ## Prerequisites ### Infrastructure The VM you run Coder on must have a running Docker socket and the `coder` user must be added to the Docker group: ```sh # Add coder user to Docker group sudo adduser coder docker # Restart Coder server sudo systemctl restart coder # Test Docker sudo -u coder docker ps ``` ## Architecture Coder supports devcontainers with [envbuilder](https://github.com/coder/envbuilder), an open source project. Read more about this in [Coder's documentation](https://coder.com/docs/v2/latest/templates/devcontainers). This template provisions the following resources: - Docker image (built by Docker socket and kept locally) - Docker container pod (ephemeral) - Docker volume (persistent on `/home/coder`) This means, when the workspace restarts, any tools or files outside of the home directory are not persisted. To pre-bake tools into the workspace (e.g. `python3`), modify the container image. Alternatively, individual developers can [personalize](https://coder.com/docs/v2/latest/dotfiles) their workspaces with dotfiles. > **Note** > This template is designed to be a starting point! Edit the Terraform to extend the template to support your use case. ### Editing the image Edit the `Dockerfile` and run `coder templates push` to update workspaces.