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. A devcontainer.json file in your project tells VS Code how to access (or create) a development container with a well-defined tool and runtime stack. This container can be used to run an application or to separate tools, libraries, or runtimes needed for working with a codebase.
Workspace files are mounted from the local file system or copied or cloned into the container. Extensions are installed and run inside the container, where they have full access to the tools, platform, and file system. This means that you can seamlessly switch your entire development environment just by connecting to a different container.
```mermaid
flowchart LR
classDef ClassM fill:#e96;
subgraph Local OS
subgraph VS [VS Code]
Theme0[Theme/UI Extension]
Theme1[Theme/UI Extension]
end
SrcReal[(Source Code)]
end
subgraph Container
subgraph VServer [VS Code VServer]
Work0[Workspace Extension]
Work1[Workspace Extension]
end
SrcMirr[(Source Code)]:::ClassM
FileSys[(File System)]
Term[Terminal Process]
App[Running Application]
Dbg[Debugger]
end
VS -->|Exposed Port| VServer
SrcReal -->|Volume Mount| SrcMirr
VServer --> SrcMirr
VServer --> FileSys
VServer --> Term
VServer --> App
VServer --> Dbg
```
This lets VS Code provide a local-quality development experience — including full IntelliSense (completions), code navigation, and debugging — regardless of where your tools (or code) are located.
## 1.System requirements
**Local:**
* Windows: Docker Desktop 2.0+ on Windows 10 Pro/Enterprise. Windows 10 Home (2004+) requires Docker Desktop 2.3+ and the WSL 2 back-end. (Docker Toolbox is not supported. Windows container images are not supported.)
* macOS: Docker Desktop 2.0+.
* Linux: Docker CE/EE 18.06+ and Docker Compose 1.21+. (The Ubuntu snap package is not supported.)