Issue Report: WSL2 Development Container Fails with Docker Socket Mount Error
Issue Description
When attempting to open a folder in a container using VS Code’s Remote-Containers extension on Windows with WSL2, container creation consistently fails with the following error:
Error response from daemon: can't access specified distro mount service: stat /run/guest-services/distro-services/docker-desktop.sock: no such file or directory
Environment
- OS: Windows with WSL2
- Docker Desktop: Latest version with WSL2 backend
- VS Code: Latest version
- Extension: Remote-Containers (v0.401.0)
- Docker socket location (found via
find / -name docker.sock 2>/dev/null
):
/tmp/docker-desktop-root/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/docker.sock
Reproduction Steps
- Create a Docker project with
docker-compose.yml
and.devcontainer/devcontainer.json
- Attempt to open the folder in container using VS Code’s “Remote-Containers: Open Folder in Container” command
- Container build succeeds, but container creation fails with the socket error
Configuration Files
docker-compose.yml
services:
mcpdev:
build:
context: .
dockerfile: Dockerfile
volumes:
- ../:/workspace:cached
- /var/run/docker.sock:/var/run/docker.sock
working_dir: /workspace
entrypoint: ["tail", "-f", "/dev/null"]
ports:
- "5678:5678"
- "23001-23030:23001-23030"
extra_hosts:
- "host.docker.internal:host-gateway"
tty: true
environment:
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
.devcontainer/devcontainer.json
{
"name": "MCP Dev Container",
"dockerComposeFile": "../docker-compose.yml",
"service": "mcpdev",
"workspaceFolder": "/workspace",
"remoteUser": "root",
"overrideCommand": false,
"customizations": {
"vscode": {
"settings": {
"remote.containers.enableWSLg": false,
"remote.containers.mountWslDistro": false
},
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"ms-toolsai.jupyter",
"ms-azuretools.vscode-docker"
]
}
}
}
Troubleshooting Attempted
- Verified Docker daemon is running with
ps aux | grep dockerd
- Located the actual Docker socket at
/tmp/docker-desktop-root/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/docker.sock
- Tried different Docker socket mount paths in docker-compose.yml:
- Standard path:
/var/run/docker.sock:/var/run/docker.sock
- Actual path:
/tmp/docker-desktop-root/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/docker.sock:/var/run/docker.sock
- Standard path:
- Disabled WSLg integration in devcontainer.json with
"remote.containers.enableWSLg": false
- Disabled WSL distro mounting with
"remote.containers.mountWslDistro": false
- Created symbolic link from actual socket location to standard location
- Simplified configuration to minimal settings
- Tried different container commands (tail -f /dev/null, sleep infinity)
Error Details
The error occurs during the docker compose up -d
command that VS Code runs. Looking at the logs, VS Code is still trying to mount:
\\wsl.localhost\docker-desktop\mnt\host\wslg\runtime-dir\wayland-0:/tmp/vscode-wayland-469dafb0-2957-4338-85e8-3491c7bae47e.sock
More log
=> [mcpdev] exporting to image 0.0s
=> => exporting layers 0.0s
=> => preparing layers for inline cache 0.0s
=> => writing image sha256:794a7433acba6dc9ccd16079e97bb7c557d92ab80d1ba 0.0s
=> => naming to docker.io/library/docker-mcpdev 0.0s
=> [mcpdev] resolving provenance for metadata file 0.0s
[+] Building 1/1
✔ mcpdev Built 0.0s
[2025-04-05T17:21:57.281Z] Stop (667 ms): Run: docker compose --project-name docker -f d:\projects\AI\MCP-Server-Unified-Deployment\docker\docker-compose.yml -f C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.build-1743873716614.yml build
[2025-04-05T17:21:57.287Z] Start: Run: docker inspect --type image docker-mcpdev
[2025-04-05T17:21:57.373Z] Stop (86 ms): Run: docker inspect --type image docker-mcpdev
[2025-04-05T17:21:57.373Z] Docker Compose override file for creating container:
services:
'mcpdev':
entrypoint: ["/bin/sh", "-c", "echo Container started\n
trap \"exit 0\" 15\n
\n
exec \"$$@\"\n
while sleep 1 & wait $$!; do :; done", "-"]
labels:
- 'devcontainer.local_folder=d:\projects\AI\MCP-Server-Unified-Deployment\docker'
- 'devcontainer.config_file=d:\projects\AI\MCP-Server-Unified-Deployment\docker\.devcontainer\devcontainer.json'
volumes:
- vscode:/vscode
- \\wsl.localhost\docker-desktop\mnt\host\wslg\runtime-dir\wayland-0:/tmp/vscode-wayland-e33353af-2e8e-40b6-8a80-34ea2d195b92.sock
volumes:
vscode:
external: true
[2025-04-05T17:21:57.373Z] Writing docker-compose.devcontainer.containerFeatures-1743873717373-0fe44850-87cb-4ffc-b34d-9e770993d93c.yml to C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose
[2025-04-05T17:21:57.374Z] Start: Run: docker compose --project-name docker -f d:\projects\AI\MCP-Server-Unified-Deployment\docker\docker-compose.yml -f C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.build-1743873716614.yml -f C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.containerFeatures-1743873717373-0fe44850-87cb-4ffc-b34d-9e770993d93c.yml up -d
[2025-04-05T17:21:57.494Z]
[2025-04-05T17:21:57.590Z]
[+] Running 0/1
- Container docker-mcpdev-1 Creating 0.0s
[2025-04-05T17:21:57.621Z] Error response from daemon: can't access specified distro mount service: stat /r
un/guest-services/distro-services/docker-desktop.sock: no such file or directory
[2025-04-05T17:21:57.683Z] Stop (309 ms): Run: docker compose --project-name docker -f d:\projects\AI\MCP-Server-Unified-Deployment\docker\docker-compose.yml -f C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.build-1743873716614.yml -f C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.containerFeatures-1743873717373-0fe44850-87cb-4ffc-b34d-9e770993d93c.yml up -d
[2025-04-05T17:21:57.685Z] Error: Command failed: docker compose --project-name docker -f d:\projects\AI\MCP-Server-Unified-Deployment\docker\docker-compose.yml -f C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.build-1743873716614.yml -f C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data\docker-compose\docker-compose.devcontainer.containerFeatures-1743873717373-0fe44850-87cb-4ffc-b34d-9e770993d93c.yml up -d
[2025-04-05T17:21:57.685Z] at ftA (C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js:433:3355)
[2025-04-05T17:21:57.685Z] at async htA (C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js:413:3496)
[2025-04-05T17:21:57.685Z] at async TtA (C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js:485:4021)
[2025-04-05T17:21:57.685Z] at async iB (C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js:485:4963)
[2025-04-05T17:21:57.685Z] at async wrA (C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js:666:203)
[2025-04-05T17:21:57.685Z] at async DrA (C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js:665:14830)
[2025-04-05T17:21:57.685Z] at async C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js:485:1190
[2025-04-05T17:21:57.694Z] Stop (2153 ms): Run: C:\Users\bu\AppData\Local\Programs\Microsoft VS Code\Code.exe C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js up --user-data-folder C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data --container-session-data-folder /tmp/devcontainers-d439b38d-9575-465f-b017-2b063a7793541743873714041 --workspace-folder d:\projects\AI\MCP-Server-Unified-Deployment\docker --workspace-mount-consistency cached --gpu-availability detect --id-label devcontainer.local_folder=d:\projects\AI\MCP-Server-Unified-Deployment\docker --id-label devcontainer.config_file=d:\projects\AI\MCP-Server-Unified-Deployment\docker\.devcontainer\devcontainer.json --log-level debug --log-format json --config d:\projects\AI\MCP-Server-Unified-Deployment\docker\.devcontainer\devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --mount type=bind,source=\\wsl.localhost\docker-desktop\mnt\host\wslg\runtime-dir\wayland-0,target=/tmp/vscode-wayland-e33353af-2e8e-40b6-8a80-34ea2d195b92.sock --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root --include-configuration --include-merged-configuration
[2025-04-05T17:21:57.695Z] Exit code 1
[2025-04-05T17:21:57.697Z] Command failed: C:\Users\bu\AppData\Local\Programs\Microsoft VS Code\Code.exe C:\Users\bu\.vscode\extensions\ms-vscode-remote.remote-containers-0.401.0\dist\spec-node\devContainersSpecCLI.js up --user-data-folder C:\Users\bu\AppData\Roaming\Code\User\globalStorage\ms-vscode-remote.remote-containers\data --container-session-data-folder /tmp/devcontainers-d439b38d-9575-465f-b017-2b063a7793541743873714041 --workspace-folder d:\projects\AI\MCP-Server-Unified-Deployment\docker --workspace-mount-consistency cached --gpu-availability detect --id-label devcontainer.local_folder=d:\projects\AI\MCP-Server-Unified-Deployment\docker --id-label devcontainer.config_file=d:\projects\AI\MCP-Server-Unified-Deployment\docker\.devcontainer\devcontainer.json --log-level debug --log-format json --config d:\projects\AI\MCP-Server-Unified-Deployment\docker\.devcontainer\devcontainer.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=vscode,target=/vscode,external=true --mount type=bind,source=\\wsl.localhost\docker-desktop\mnt\host\wslg\runtime-dir\wayland-0,target=/tmp/vscode-wayland-e33353af-2e8e-40b6-8a80-34ea2d195b92.sock --skip-post-create --update-remote-user-uid-default on --mount-workspace-git-root --include-configuration --include-merged-configuration
[2025-04-05T17:21:57.697Z] Exit code 1
And is looking for a socket at:
/run/guest-services/distro-services/docker-desktop.sock
Which doesn’t exist in the Docker Desktop VM.
Expected Behavior
VS Code should successfully create and connect to the development container without attempting to access non-existent socket files.
Additional Notes
- Regular
docker compose up -d
commands work fine when run directly in WSL2 - The issue appears specific to how VS Code’s Remote-Containers extension interacts with Docker Desktop in WSL2 mode
- The extension seems to be adding additional mounts that conflict with the WSL2 environment
This issue prevents using VS Code’s development containers feature with Docker Desktop on WSL2.