Supporting tools and services

This page outlines tools and services that currently support the development container specification, including the devcontainer.json format.

While most dev container properties apply to any devcontainer.json supporting tool or service, a few are specific to certain tools, which are outlined below.

devcontainer CLI

There will be a dev container command line interface (CLI) that can take a devcontainer.json and create and configure a dev container from it. The CLI allows for prebuilding dev container definitions using a CI or DevOps product like GitHub Actions. It can detect and include dev container features and apply them at container runtime, and run lifecycle commands like postCreateCommand, providing more power than a plain docker build and docker run.

The publishing of this CLI is being discussed in a dev-container-spec issue and will be available on the reference page of this site.

GitHub Codespaces

A codespace is a development environment that’s hosted in the cloud. Codespaces run on a variety of VM-based compute options hosted by GitHub.com, which you can configure from 2 core machines up to 32 core machines. You can connect to your codespaces from the browser or locally using Visual Studio Code.

Tip: If you make a change to your dev container after having built and connected to your codespace, be sure to run Codespaces: Rebuild Container from the Command Palette (kbstyle(F1)) to pick up any changes you make.

Product specific properties

GitHub Codespaces works with a growing number of tools and, where applicable, their devcontainer.json properties. For example, connecting the Codespaces web editor or VS Code enables the use of VS Code properties.

Product specific limitations

Property or variable Type Description
mounts array Codespaces ignores “bind” mounts with the exception of the Docker socket. Volume mounts are still allowed.
workspaceMount string Not yet supported in Codespaces.
workspaceFolder string Not yet supported in Codespaces.
forwardPorts array Codespaces does not yet support the "host:port" variation of this property.
portsAttributes object Codespaces does not yet support the "host:port" variation of this property.
shutdownAction enum Does not apply to Codespaces.
${localEnv:VARIABLE_NAME} Any For Codespaces, the host is in the cloud rather than your local machine.

Visual Studio Code Remote - Containers

The Visual Studio Code Remote - Containers extension lets you use a Docker container as a full-featured development environment. It allows you to open any folder inside (or mounted into) a container and take advantage of Visual Studio Code’s full feature set. There is more information in the Remote - Containers documentation.

Tip: If you make a change to your dev container after having built and connected to it, be sure to run Remote-Containers: Rebuild Container from the Command Palette (kbstyle(F1)) to pick up any changes you make.

Product specific properties

Some properties are specific to VS Code. Please note that Codespaces supports these VS Code properties.

Property Type Description
extensions array An array of extension IDs that specify the extensions that should be installed inside the container when it is created. Defaults to [].
settings object Adds default settings.json values into a container/machine specific settings file. Defaults to {}.

Product specific limitations

Some properties may also have certain limitations in the Remote - Containers extension.

Property or variable Type Description
workspaceMount string Not yet supported when using Clone Repository in Container Volume.
workspaceFolder string Not yet supported when using Clone Repository in Container Volume.
${localWorkspaceFolder} Any Not yet supported when using Clone Repository in Container Volume.
${localWorkspaceFolderBasename} Any Not yet supported when using Clone Repository in Container Volume.

Remote - Containers CLI

There is a Remote - Containers devcontainer CLI which may be installed within Remote - Containers or through the command line.

Schema

You can explore the VS Code implementation of the dev container schema.