You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code打开第二个Dev Container时第一个被关闭或被识别为同一容器的问题咨询

VS Code打开第二个Dev Container时第一个被关闭或被识别为同一容器的问题咨询

我明白你遇到的这个问题有多闹心——明明是两个完全独立的仓库克隆,结果VS Code要么把第一个Dev Container断开,要么把第二个识别成第一个,甚至显示第一个的未提交文件。咱们先搞清楚VS Code和Docker是怎么定义Dev Container身份的,再一步步解决:

Dev Container身份的核心识别因素

你改了devcontainer.json里的name和工作区名称但没用,是因为这些只是VS Code界面上的显示名称,真正决定容器独立性的是Docker层面的隔离配置:

  • Docker Compose的项目名称:默认情况下,Compose会根据项目所在目录的名称生成容器、网络、卷的前缀,如果你两个项目的目录结构有相似性,就容易冲突;
  • 容器的唯一标识:如果两个Compose生成的容器名称重复,VS Code会误以为是同一个实例;
  • 存储卷/挂载:如果两个容器共用了同一个命名卷,就会出现数据串流的情况(比如显示另一个容器的未提交文件)。

具体解决步骤

1. 给每个Dev Container设置唯一的Compose项目名称

这是最关键的一步,在devcontainer.json里新增composeProjectName字段,给devA和devB分别设置独一无二的名称,让Docker为它们生成完全独立的环境:

devA的devcontainer.json:

{
  "name": "Pose Dev Container (devA)", // 改成唯一名称,方便界面区分
  "dockerComposeFile": ["docker-compose.yaml"],
  "service": "pose",
  "composeProjectName": "pose-devA", // 新增唯一项目名
  "workspaceFolder": "/Pose",
  "forwardPorts": [3306],
  "postCreateCommand": "pip install ipykernel",
  "customizations": {
    "settings": {
      "python.pythonPath": "/usr/local/bin/python"
    },
    "vscode": {
      "extensions": [
        "ms-python.python",
        "ms-toolsai.jupyter"
      ]
    }
  }
}

devB的devcontainer.json:
把composeProjectName改成pose-devB,name也可以改成Pose Dev Container (devB)方便区分。

2. 检查Docker Compose的卷配置

如果你的docker-compose.yaml里用了命名卷(不是绑定挂载),设置composeProjectName后,Compose会自动给卷名加上项目前缀(比如devA的卷会变成pose-devA_pose-data),这样就不会和devB的卷冲突了。如果是自定义的命名卷,确保不要在两个项目里用完全一样的名称。

3. 清理旧容器和缓存

有时候残留的旧容器或缓存会导致VS Code识别混乱,先关闭所有VS Code窗口,然后用命令清理:

# 停止并删除devA的相关容器、卷
docker-compose -f devA/.devcontainer/docker-compose.yaml down -v
# 停止并删除devB的相关容器、卷
docker-compose -f new_folder/devB/.devcontainer/docker-compose.yaml down -v

或者直接删除所有和pose相关的容器:

docker ps -a | grep pose | awk '{print $1}' | xargs docker rm -f

4. 确保VS Code窗口打开正确的目录

打开devA时,直接选择desktop/devA文件夹;打开devB时选择desktop/new_folder/devB文件夹,让VS Code关联到各自的devcontainer.json,避免工作区混淆。

做完这些步骤后,重新打开两个VS Code窗口分别加载devA和devB的Dev Container,应该就能正常同时运行,且不会互相干扰了。

备注:内容来源于stack exchange,提问作者Kunal Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:33:09