vscode 的 Remote – Containers 插件支持在 docker 容器中开发,无需本地安装依赖,确保环境干净、可复现、团队一致;需安装 Docker 和插件,配置 devcontainer.json,通过“Reopen in Container”一键启动,支持端口转发、调试、实时同步及自定义构建。

用 VSCode 的 Remote – Containers 插件,你不用在本地装一堆开发依赖,也能直接在 Docker 容器里写代码、调试、运行服务——环境干净、可复现、团队一致。
一、基础准备:Docker + 插件 + devcontainer.json
确保本地已安装 Docker Desktop(或 Docker Engine),并启动。然后在 VSCode 扩展市场搜索安装 Remote – Containers(官方插件,图标是蓝色容器)。
项目根目录下新建 .devcontainer/ 文件夹,在其中创建 devcontainer.json。它定义了容器怎么建、装什么、端口怎么映射、哪些命令自动执行。最简配置示例如下:
{ "image": "mcr.microsoft.com/devcontainers/python:3.11", "forwardPorts": [8000, 3000], "customizations": { "vscode": { "extensions": ["ms-python.python", "esbenp.prettier-vscode"] } } }
这个配置会拉取微软维护的 Python 3.11 开发镜像,自动转发 8000 和 3000 端口,并预装两个常用扩展。
二、一键打开:从本地文件夹进容器
打开你的项目文件夹(不是容器),按 Ctrl+Shift+P(windows/linux)或 Cmd+Shift+P(Mac),输入 Remote-Containers: Reopen in Container,回车。
VSCode 会自动构建镜像(如果用了 Dockerfile)、启动容器、挂载当前目录、安装扩展、执行初始化脚本——整个过程通常 20–60 秒。之后编辑器左下角状态栏会出现绿色的 Dev Container 标识,说明已连上容器内部环境。
- 所有终端(Terminal → New Terminal)默认是容器内的 shell,不是你本地的
- Ctrl/Cmd+Click 跳转、调试、git 操作全部在容器上下文中运行
- 本地文件修改实时同步到容器,反之亦然(基于 volume 挂载)
三、进阶技巧:自定义构建与环境隔离
想完全控制环境?把 “image” 换成 “build” 字段,指向一个 Dockerfile:
"build": { "dockerfile": "Dockerfile.dev", "args": { "node_VERSION": "20" } }
然后在 Dockerfile.dev 中用 ARG NODE_VERSION 接收参数,灵活切换版本。还可以加 “postCreateCommand” 自动装包、生成密钥、初始化数据库:
"postCreateCommand": "pip install -r requirements.txt && python manage.py migrate"
不同项目用不同容器,互不干扰;同一项目多人协作,只要 devcontainer.json 一致,就几乎不会出现“在我机器上能跑”的问题。
四、调试与端口访问:和本地一样顺手
容器里跑的 Web 服务(比如 Django 的 runserver 或 react 的 vite dev),只要端口在 forwardPorts 列表中,VSCode 就会自动在本地浏览器打开 http://localhost:8000(实际流量经由 VSCode 代理到容器)。
断点调试也照常工作:设好断点 → 启动调试配置(launch.json 中 type 设为 python 或 node)→ 运行程序 → 断点命中。所有路径、变量、调用栈都基于容器内环境解析。
- 需要访问容器内未转发的端口?点击左下角端口列表,勾选 “Always open in browser” 或 “copy link”
- 想进容器终端排查问题?命令面板输入 Remote-Containers: Open Container Terminal
- 临时停用容器?右键状态栏 Dev Container → Close Remote Connection
基本上就这些。不复杂但容易忽略:devcontainer.json 是你的环境说明书,值得花十分钟配好,换来长期省心。