Dev Containers 用 docker 容器封装完整开发环境,确保跨机器、系统、团队的一致性;通过预建镜像和 devcontainer.json 声明式配置,5 分钟快速复现环境,避免本地安装的版本冲突与污染。
vs code 的 dev containers 功能,让你用 docker 容器“装”整个开发环境——代码、工具、依赖、配置全打包,换机器、换系统、换队友,一键复现,彻底告别“在我电脑上是好的”。
为什么 Dev Containers 比本地安装更可靠
本地装 node、python、JDK、数据库客户端……版本冲突、路径污染、权限问题、文档没写清楚的隐式依赖,太常见。Dev Containers 把一切锁死在容器镜像里,启动即一致。
- 所有命令(npm install、pip install、make)都在容器内执行,不污染宿主机
- vs code 的扩展(如 Python、go、ESLint)可分别配置为“仅在容器中启用”,避免本地和容器环境错配
- 团队共享一个 .devcontainer/devcontainer.json,新人克隆仓库后点一下“Reopen in Container”,5 分钟进入编码状态
一个最小可用的 devcontainer.json 长什么样
不需要从零写 Dockerfile。VS Code 提供大量预构建镜像,比如 mcr.microsoft.com/vscode/devcontainers/python:3.11,已含 Python、pip、venv、git 和常用编译工具。
在项目根目录建 .devcontainer/devcontainer.json:
{ "image": "mcr.microsoft.com/vscode/devcontainers/python:3.11", "forwardPorts": [8000, 3000], "customizations": { "vscode": { "extensions": ["ms-python.python", "esbenp.prettier-vscode"] } } }
保存后按 Ctrl+Shift+P → “Dev Containers: Reopen in Container”,VS Code 自动拉镜像、启动容器、挂载当前目录、安装扩展。
需要自定义环境?Dockerfile 比想象中简单
当预建镜像不够用(比如要加 postgresql 客户端、特定 CUDA 版本、私有 npm registry),就写个轻量 Dockerfile,再指向它:
"build": { "dockerfile": "Dockerfile" }
示例(基于 Python 镜像加 pgcli):
FROM mcr.microsoft.com/vscode/devcontainers/python:3.11 RUN pip install pgcli ENV LANG=C.UTF-8
VS Code 构建时自动缓存层,后续修改只重跑变更部分,不慢。
进阶但实用:挂载、端口、初始化脚本
真实开发绕不开这些细节:
- 挂载宿主机配置:用 mounts 字段把 ~/.ssh 或 ~/.gitconfig 挂进容器,免密登录、保留 Git 账号
- 启动即运行服务:用 onCreateCommand 启动 redis 或数据库,或用 postCreateCommand 自动 pip install -r requirements.txt
- 多容器协作:通过 docker-compose.yml 定义 app + db + cache,Dev Containers 原生支持,devcontainer.json 中设 “dockerComposeFile”: “docker-compose.yml”
基本上就这些。不用改工作流,不学新 ide,只是把“开终端、敲命令、配半天”的过程,变成一次声明、处处运行。Dev Containers 不是未来方案,是现在就能删掉你本地 17 个 brew install 的务实选择。