讲师中心 微信公众号
AI工具推荐 视频效率加速

VSCode利用Docker插件运行开发容器

阿婷君_6160

阿婷君_6160

发布时间:2026-08-02 09:22:01

|

490人浏览过

|

来源于php中文网

原创

必须安装Remote-Containers扩展并配置.devcontainer/devcontainer.json,VSCode才可接管容器内完整开发环境;Docker插件仅管理容器,不支持开发环境挂载。

vscode利用docker插件运行开发容器

VSCode 用 Docker 插件本身不能运行开发容器——它只负责“看容器”,真正接管开发环境必须靠 Remote-Containers 扩展和 .devcontainer/devcontainer.json 配置。

为什么点“Reopen in Container”没反应或卡在 Building image…

根本不是插件没装对,而是 Docker CLI 不可用或权限没通。VSCode 的 Remote-Containers 完全依赖本地 docker 命令执行构建、启动、挂载等操作。

  • 在终端运行 docker info,如果报 permission denied 或连接失败,说明 Docker daemon 没起来,或当前用户不在 docker 组(Linux/macOS)
  • Windows/macOS 用户要确认 Docker Desktop 正在运行;Linux 用户需执行 sudo systemctl start docker 并加组:sudo usermod -aG docker $USER,然后**完全退出并重登系统**
  • 别用 sudo code 启动 VSCode——这会让容器内进程 UID 错乱,后续 git clone 或 npm install 直接 Permission denied

devcontainer.json 放错位置或字段写漏的典型表现

VSCode 只认项目根目录下 .devcontainer/devcontainer.json 这一个路径。放错地方、名字拼错、或者关键字段缺失,都会导致“看似配置了,实则没生效”。

Dolphindb Docker
Dolphindb Docker

自动化 DolphinDB Docker 部署,支持自动架构检测(ARM64/x86_64),智能内存分配(50% 规则)以及完整数据持久化。

下载
  • "image" 和 "build" 必须二选一填,不能都空着;用 "build" 时,"dockerFile" 路径是相对于 .devcontainer/ 的,比如 "dockerFile": "Dockerfile"
  • "forwardPorts" 漏写,服务明明在容器里跑着(npm start 输出 Listening on http://localhost:3000),但 VSCode 右下角不显示可点击链接,宿主机也打不开 localhost:3000
  • "customizations.vscode.extensions" 不配,容器里就只有裸编辑器,ms-python.python、esbenp.prettier-vscode 全都不见,格式化、调试、语法检查全部失效

容器内文件权限错乱:git status 总显示 modified

这不是 Git 问题,是 UID/GID 不匹配。VSCode 默认以宿主机当前用户的 UID 启动容器进程,但多数官方镜像(如 python:3.11-slim)只有 root 用户,没创建对应 UID 的普通用户。

  • 最稳解法:在 devcontainer.json 中加这两行:
    "remoteUser": "vscode" 和 "runArgs": ["--user", "vscode"]
  • 同时在自定义 Dockerfile 里创建该用户:
    RUN useradd -m -u 1001 -G sudo vscode
  • 千万别设 "remoteUser": "root"——虽然能过构建,但所有生成文件属主都是 root:root,协作时 git commit 会因权限拒绝失败

Remote-Containers 日志藏得深,错误不弹窗只闪一下

很多问题根本不会报红框,比如 postCreateCommand 失败、端口转发失败、插件安装超时,全都在 Dev Container 日志里一闪而过。

  • 务必养成习惯:点 VSCode 右下角状态栏的 Dev Container,再点 “Show Log”
  • forwardPorts 漏写时,日志里会出现类似 Port 3000 not forwarded 的提示,但 UI 上毫无反馈
  • 插件安装失败时,日志里会明确写 Failed to install extension xxx,而不是静默跳过

真正麻烦的不是写几行 JSON,而是这些错误既不报错也不提示,全靠翻日志、看状态栏、比对 UID——稍不注意,就陷入“容器起来了,但代码跑不了、文件存不了、端口连不上”的三不管状态。

热门AI工具

更多
火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

685

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4979

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5937

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2253

2024.04.08

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

239

2026.02.11

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

431

2026.03.31

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

380

2026.05.11

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

285

2026.05.15

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

100

2026.09.30

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn