# VS Code Remote Container Failed
You try to open a folder in a Dev Container, but the build fails with cryptic Docker errors. Or the container starts but VS Code can't connect to it. The terminal shows "connection refused" or the extension installation inside the container hangs. Dev Containers (formerly Remote Containers) are VS Code's most powerful remote development feature, but they have many failure points.
Understanding Dev Container Architecture
Dev Containers involve:
- 1.Docker container running your development environment
- 2.VS Code server running inside the container
- 3.Local VS Code connecting to the remote server
- 4.devcontainer.json defining the configuration
Any step failing breaks the entire flow.
Step 1: Check Docker Prerequisites
Dev Containers require Docker:
Verify Docker:
``bash
docker --version
docker ps
docker info
Docker must be running:
- Linux: sudo systemctl status docker
- Windows/macOS: Docker Desktop whale icon visible
Test basic container:
``bash
docker run --rm hello-world
If this fails, fix Docker before troubleshooting Dev Containers.
Step 2: Validate devcontainer.json
A malformed devcontainer.json causes build failures:
Check file location:
``
.vscode/devcontainer.json
# or
devcontainer/devcontainer.json
# or
devcontainer.json (project root)
Minimal valid devcontainer.json:
``json
{
"name": "My Dev Container",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu"
}
Common configuration errors:
```json // WRONG: Invalid Dockerfile path { "build": { "dockerfile": "Dockerfile" // Must exist } }
// WRONG: Missing required fields for Docker Compose { "dockerComposeFile": "docker-compose.yml" // File must exist } ```
Use schema validation: VS Code should validate devcontainer.json. Check for red squiggles.
Step 3: Fix Image Build Failures
Build errors appear in the Output panel:
- 1.View build logs:
- 2.Output panel → "Dev Containers" dropdown
- 3.Look for build failure messages
Common build errors:
``
ERROR: failed to solve: failed to compute cache key
ERROR: failed to solve: process "/bin/sh -c ..." did not complete
Fix Dockerfile:
``bash
# Test Dockerfile manually
docker build -t test-container .
If manual build fails, fix Dockerfile first.
Check context:
``json
{
"build": {
"dockerfile": "Dockerfile",
"context": "." // Ensure correct context folder
}
}
Step 4: Handle Dockerfile Path Issues
VS Code can't find the Dockerfile:
Absolute vs relative paths: ```json // Relative (recommended) { "build": { "dockerfile": "Dockerfile" } }
// In subfolder { "build": { "dockerfile": "docker/Dockerfile", "context": "docker" } } ```
Verify Dockerfile exists:
``bash
ls .vscode/Dockerfile
ls Dockerfile
Step 5: Fix Docker Compose Configuration
Dev Containers using Docker Compose have additional complexity:
Minimal compose config:
``yaml
# docker-compose.yml
version: '3.8'
services:
app:
build: .
volumes:
- ..:/workspaces/${localWorkspaceFolderBasename}
command: sleep infinity
devcontainer.json for compose:
``json
{
"name": "My Project",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}"
}
Common compose errors: - Service name mismatch between devcontainer.json and compose file - Missing volumes mount - Incorrect workspaceFolder path
Step 6: Fix Container Connection Issues
Container starts but VS Code can't connect:
Check VS Code server installation: Look for "Installing VS Code Server" in the progress notification.
Server installation failures:
``
[error] Failed to install VS Code Server
[error] Connection refused
Clear server cache:
``bash
# On host machine
rm -rf ~/.vscode-server
rm -rf ~/.vscode-remote
Check container network:
``bash
# From inside container
curl -I https://update.code.visualstudio.com
If network fails inside container, fix container network configuration.
Step 7: Handle Extension Installation Issues
Extensions fail to install inside container:
Check extensions log: Output panel → "Extension Host" (in the remote container window)
Common extension issues: - Extension not compatible with remote - Missing dependencies in container
Configure extensions:
``json
{
"customizations": {
"vscode": {
"extensions": [
"ms-python.python",
"dbaeumer.vscode-eslint"
]
}
}
}
Install manually inside container:
In the remote window:
Ctrl+Shift+P → "Extensions: Install Extensions"
Step 8: Fix Volume Mount Issues
Files don't appear correctly in container:
Check volume mounts:
``bash
# In container
ls /workspaces/project-name
- 1.Windows path issues:
- 2.Windows drives must be shared with Docker Desktop:
- 3.Docker Desktop Settings → Resources → File Sharing
- 4.Add your project folder
Linux permissions:
``bash
# Check mount permissions
docker exec -it container-name ls -la /workspaces/
Step 9: Handle Port Forwarding Problems
Ports don't forward from container:
Configure ports:
``json
{
"forwardPorts": [3000, 8080],
"portsAttributes": {
"3000": {
"label": "App",
"onAutoForward": "notify"
}
}
}
Manual port forward: In the remote window: Ports panel → "Forward Port" → enter port number
Check app is listening:
``bash
# In container
netstat -tlnp | grep 3000
Step 10: Rebuild Clean Container
Persistent issues often require clean rebuild:
Rebuild container:
Ctrl+Shift+P → "Dev Containers: Rebuild Container"
Rebuild without cache:
Ctrl+Shift+P → "Dev Containers: Rebuild Container Without Cache"
Full reset:
``bash
# Delete all Dev Containers data
rm -rf ~/.vscode-server
docker system prune -a # Warning: removes all containers/images
Verification
Test Dev Container works:
- 1.Open folder with devcontainer.json
- 2."Dev Containers: Reopen in Container"
- 3.Wait for build and server installation
- 4.VS Code should show "Container <name>" in status bar
- 5.Terminal should work inside container
- 6.Extensions should install
- 7.Files should be accessible
- 8.Ports should forward
Quick Reference
| Problem | Cause | Solution |
|---|---|---|
| Build fails | Dockerfile or compose error | Test build manually, fix config |
| Connection refused | Server install failed | Clear cache, rebuild |
| Files not visible | Volume mount issue | Check mounts, Docker Desktop sharing |
| Extensions don't install | Missing or incompatible | Add to devcontainer.json |
| Ports not forwarded | Not configured | Add forwardPorts |
| Docker not found | Not installed/running | Install and start Docker |
Dev Container failures often cascade from Docker issues. Start by verifying Docker, then validate devcontainer.json, and finally check the container connection.