VS Code 不能直接连接 Docker 容器,必须通过 Remote-Containers 扩展将编辑环境“投射”进容器,Docker 扩展仅辅助管理镜像和容器;两者分工明确、缺一不可,且必须安装官方插件 ms-vscode-remote.remote-containers 并配置 .devcontainer/devcontainer.json 或 Dockerfile 才能触发容器内开发模式。

VS Code 不能直接连接 Docker 容器,必须靠 Remote-Containers 扩展把编辑环境“投射”进容器;Docker 扩展只负责管理镜像、启停容器和查日志,两者分工明确,缺一不可。
Remote-Containers 扩展怎么装、怎么用
这是实现“在容器里写代码”的唯一可靠路径,不是可选项。
- 必须从 VS Code 扩展市场安装官方插件:
ms-vscode-remote.remote-containers(认准发布者 Microsoft) - 装完后,项目根目录要存在
.devcontainer/devcontainer.json或.devcontainer/Dockerfile,否则 VS Code 不会识别为容器开发模式 - 打开含该目录的文件夹时,右下角弹出 “Reopen in Container” 才算触发成功;点它,VS Code 会自动构建镜像、启动容器、挂载当前目录、并在容器内拉起服务端
- 若容器启动失败,先看命令面板中
Remote-Containers: Show Log,而不是盯着弹窗——常见原因是容器里没bash或/workspaces目录不可写
Docker 扩展能做什么、不能做什么
它不参与代码编辑会话,只做基础设施层面的操作,本质是图形化封装 docker CLI 命令。
- 左侧鲸鱼图标点开后,
Containers节点只显示 正在运行 的容器(docker ps结果),已退出的不会出现 - 右键容器 →
Attach Shell可进入终端,但前提是容器主进程没退出(比如用sleep 10启动的容器,shell 会立刻断开) - 右键镜像 →
Run Interactive…时填的参数(如-p 3000:3000 -v /host:/container)必须与 CLI 格式完全一致,不能换行,路径写宿主机绝对路径 - 构建镜像失败?大概率是上下文路径不对:插件默认以
Dockerfile所在目录为构建上下文,如果COPY package.json .却把Dockerfile放在./src/下,就会找不到文件
为什么连不上?高频权限和路径坑
报错信息往往藏得深,表面提示误导性强,真正原因集中在环境准备和挂载配置上。
-
The container did not start correctly→ 进容器执行docker exec -it <id> which bash</id>,Alpine 镜像需手动apk add bash curl -
Permission denied (publickey)→ 和 SSH 无关!这是 Remote-Containers 尝试写/root或/workspaces时被拒绝,检查挂载是否加了:ro,或容器内对应目录是否chown错了用户 - Linux 用户装完插件没反应 → 检查
docker命令是否真能免sudo运行,执行sudo usermod -aG docker $USER后必须完全登出重进 - Windows 用户用 WSL2 后端却连不上 → 确保 VS Code 是 Windows 版(不是 WSL 里的 VS Code Server),且 Docker Desktop 设置为 WSL2 backend,
docker context指向desktop-linux
Dev Container 启动后,你的开发环境在哪运行
所有操作边界都切换到了容器内部,这点容易被忽略,但直接影响调试、依赖和路径行为。
- VS Code 终端里执行
which python、node -v,返回的是容器内的路径和版本,不是宿主机的 - 调试器(如 Python Debugger)加载的也是容器里的解释器,
launch.json中的pythonPath必须指向容器内路径(如/usr/bin/python3) - 端口服务默认不暴露给宿主机浏览器,必须在
devcontainer.json显式配置"forwardPorts": [3000, 8080] - 扩展(如 ESLint、Prettier)也运行在容器内,如果依赖全局 npm 包,得在
postCreateCommand里npm install -g,而不是宿主机装


















