Dev Containers 可一键复现开发环境:①用 devcontainer.json 定义镜像、扩展等;②通过 Dockerfile 自定义构建;③导出运行中容器快照克隆环境;④同步用户级配置确保跨平台一致。

如果您希望在不同机器或团队成员间快速复现一致的开发环境,但手动配置依赖、工具链和运行时耗时易错,则可能是由于本地环境差异导致开发体验割裂。以下是实现 VSCode Dev Containers 一键复制整个开发环境的具体操作路径:
本文运行环境:MacBook Pro,macOS Sequoia。
一、理解 devcontainer.json 配置文件结构
devcontainer.json 是 Dev Containers 的核心定义文件,它声明了容器基础镜像、安装的扩展、端口转发、环境变量及初始化命令等,是环境可复现性的元数据基础。
1、在项目根目录下创建 .devcontainer 文件夹。
2、在该文件夹中新建 devcontainer.json 文件。
3、填入标准模板,指定 image 字段为预构建镜像,例如 "mcr.microsoft.com/vscode/devcontainers/python:3.11"。
4、通过 features 数组声明需自动安装的工具,如 "ghcr.io/devcontainers/features/docker-in-docker:2"。
5、设置 customizations.vscode.extensions 添加必备扩展 ID,例如 "ms-python.python"。
二、基于 Dockerfile 自定义构建环境
当官方镜像无法满足项目特定需求(如私有依赖、非标编译链、定制系统包)时,可通过本地 Dockerfile 精确控制构建过程,确保环境完全可控。
1、在 .devcontainer 目录下新建 Dockerfile 文件。
2、以 FROM 指令引入基础镜像,例如 FROM ubuntu:22.04。
3、使用 RUN 安装系统级依赖,例如 RUN apt-get update && apt-get install -y build-essential curl。
4、在 devcontainer.json 中将 image 字段替换为 build.context 和 build.dockerfile 字段,指向本地 Dockerfile。
5、在 postCreateCommand 中执行项目级初始化脚本,例如 ./scripts/setup-dev.sh。
三、复用已有容器实例进行环境克隆
若当前已有一个正在运行且配置完备的 Dev Container,可直接导出其运行时状态为新环境起点,跳过从零构建过程,显著缩短复制耗时。
1、在 VSCode 命令面板(Cmd+Shift+P)中输入并选择 "Dev Containers: Export Container..."。
2、选择目标容器实例,指定导出路径为当前项目 .devcontainer/exported 目录。
3、VSCode 自动打包容器内 /workspace 内容、已安装扩展列表及部分配置元数据。
4、在另一台机器上打开同一项目,执行 "Dev Containers: Reopen in Container",系统将优先加载 exported 目录中的快照配置。
5、注意:导出内容不含运行中进程或内存状态,仅包含文件系统快照与配置映射。
四、跨平台同步用户级开发配置
VSCode 用户设置(settings.json)、键盘快捷键(keybindings.json)及代码片段(snippets)决定了开发者个人工作流,需与容器环境解耦并独立同步。
1、在 VSCode 设置界面启用 Settings Sync,登录 GitHub 账户完成首次同步。
2、在 settings.json 中显式添加 "dev.containers.defaultContainerName": "my-project-dev"。
3、将 snippets 目录(可通过 Developer: Inspect Editor Tokens and Scopes 查看路径)加入 Git 版本控制。
4、在新机器上克隆项目后,先执行 Settings Sync 恢复用户层配置,再打开文件夹触发 Dev Container 启动。
5、关键提示:Settings Sync 必须在容器启动前完成,否则容器内 VSCode 实例无法继承同步后的用户设置。










