VSCode怎么通过Dev Containers插件直接在Docker容器内部搭建开发环境

雨杰大大_2192

雨杰大大_2192

2026-03-26

777人浏览

原创

dev containers插件不生效的主因是工作区根目录下缺失正确结构的配置:必须存在名为“.devcontainer”的文件夹(非文件),其内含大小写精确匹配的devcontainer.json;且需通过“open folder”打开工作区、本地启用插件、vscode版本≥1.76。

vscode怎么通过dev containers插件直接在docker容器内部搭建开发环境

Dev Containers插件没反应,.devcontainer/devcontainer.json 不生效?

常见现象是点击 “Reopen in Container” 没反应,或提示 “No dev container configuration found”。根本原因通常是工作区根目录下缺少正确结构的配置文件,或者 VSCode 没识别到它。

  • 确保 .devcontainer 是**文件夹名**(不是 .devcontainer.json 文件),且位于你打开的 VSCode 工作区根目录下
  • devcontainer.json 必须放在 .devcontainer/ 里,不能放在项目其他位置;文件名大小写必须完全匹配(Linux 容器环境区分大小写)
  • 如果用的是远程 SSH 或 WSL,Dev Containers 插件默认不启用——必须在本地安装并启用该插件,且工作区需通过“Open Folder”方式打开(而非“Open File”)
  • VSCode 版本低于 1.76 时对某些 features 支持不全,建议保持最新稳定版

怎么写一个最小可用的 devcontainer.json

别一上来就抄复杂模板。多数场景只需指定基础镜像 + 启动后要装的工具,其余交给容器自动处理。

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载
  • 最简配置只要 imagebuild 字段之一:"image": "mcr.microsoft.com/devcontainers/python:3" 就能拉取预置 Python 环境
  • 想自定义构建,用 build 对象:"build": { "dockerfile": "Dockerfile" },此时 Dockerfile 必须在工作区根目录(不是 .devcontainer/ 下)
  • features 是最省事的扩展方式,比如加 Node.js:"features": { "ghcr.io/devcontainers/features/node:1" : {} },版本号别写错(注意是 node:1,不是 node:latest
  • 避免在 devcontainer.json 里写长 shell 命令做初始化——改用 onCreateCommand 或更可靠的 postCreateCommand
{
	"image": "mcr.microsoft.com/devcontainers/python:3",
	"features": {
		"ghcr.io/devcontainers/features/git:1": {}
	},
	"postCreateCommand": "pip install -r requirements.txt"
}

容器启动后代码没同步、终端进不去、端口打不开?

这些不是插件故障,而是容器挂载和网络配置没对齐开发预期。

  • VSCode 默认把当前工作区**完整挂载**到容器内 /workspaces/<folder-name></folder-name>,但如果你在 devcontainer.json 里改了 workspaceFolder,路径就可能错位,导致终端 pwd 不对、git 提交失败
  • 端口转发需要显式声明:"forwardPorts": [8000, 3000],否则即使容器里 flask run --port=8000 成功,宿主机也访问不到
  • 调试时发现断点不命中?检查 python.defaultInterpreterPath 是否指向容器内的解释器路径(如 /usr/bin/python3),而不是宿主机路径
  • Windows 用户注意:如果 Docker Desktop 启用了 WSL2 后端,VSCode 必须也运行在 WSL2 环境中才能无缝访问容器文件系统,否则会出现权限错误或文件延迟同步

为什么 devcontainer.json 里配了 extensions,但重启后插件没自动装?

VSCode 不会在容器内“运行”所有插件,只加载标记为 workspaceui 类型的插件,且依赖插件本身支持容器环境。

  • 确认插件页面里该插件右下角标有 WorkspaceUniversal 标签(比如 ms-python.python 支持,esbenp.prettier-vscode 也支持;但很多主题、Snippets 插件不支持)
  • extensions 数组里填的是插件 ID,不是名字:"ms-python.python" ✅,"Python"
  • 首次构建容器时,插件会自动安装;但如果后续修改了 extensions 并执行 “Rebuild Container”,部分插件可能卡在“Installing”状态——此时手动在容器内终端运行 code --install-extension ms-python.python 更可靠
  • 插件配置(如 Prettier 路径)仍需在宿主机的 settings.json 中声明,容器内不会继承用户级设置
Dev Containers 的核心逻辑是“配置即环境”,但它的可靠性高度依赖路径、挂载点、插件兼容性这三处细节。很多人卡在第二步就放弃,其实只是 .devcontainer 多了一层目录,或者 devcontainer.json 少了个逗号。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vscode

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
flask框架如何搭建
flask框架如何搭建

搭建步骤:1、安装Python和Pip;2、创建虚拟环境;3、安装Flask;4、创建Flask应用;5、运行应用;6、访问应用。想了解更多flask框架的相关内容,可以阅读本专题下面的文章。

2024.06.27

2855

8

Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

2025.08.25

4244

10

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

2025.12.15

256

16

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

1955

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2582

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

896

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

2899

7

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

3736

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1195

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程