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.