📝 Windows + Docker + VS Code Remote-Containers 故障排查与恢复

📝 Windows + Docker + VS Code Remote-Containers 故障排查与恢复#

1️⃣ 背景问题#

常见报错:

  • remote-containers.explorerTargetsRefresh: stream is closed

  • An error occurred attaching to the container

  • Unable to read file '…package.json'

原因一般为:

  1. Docker context 错误(VS Code 连接到错误 Docker 引擎)

  2. Remote-Containers / Dev Containers 扩展损坏或缓存残留

  3. VS Code 内部缓存或 workspaceStorage 被锁

  4. 容器本身缺 shell 或 ENTRYPOINT 阻塞(本次案例排除)


2️⃣ 排查 Docker Context#

docker context ls
  • 正确 context 应该指向 Windows Docker 引擎:
default *
  • 如果 context 是 desktop-linux,切换回默认:
docker context use default
  • 验证容器可访问:
docker ps
docker exec -it <container> sh
docker exec -it <container> bash

✅ 能进入容器说明容器正常。

Podman

Podman#

docker img

常用命令#

2. 启动容器并进入交互模式#

你可以使用 docker run 命令启动容器并进入容器的交互式 shell。这样你就可以进入容器内部进行调试。

复制代码

docker run -it --entrypoint /bin/bash nova-crawler:latest

参数说明:#

  • -it-i 表示以交互模式运行容器,-t 给容器分配一个伪终端,这样你就可以在终端与容器交互。
  • --entrypoint /bin/bash:这将覆盖容器的默认入口点,直接启动一个 bash shell 以便你进入容器进行调试。
  • nova-crawler:latest:你要运行的镜像名称。

3. 启动容器并调试特定命令#

如果你不想进入容器的 shell,而是想直接执行调试命令(比如启动应用并在调试模式下运行),可以使用以下命令:

bash

复制代码

docker run -it --entrypoint /bin/bash nova-crawler:latest -c "your-debug-command"

4. 查看容器日志#

如果你希望在调试时查看容器的日志输出,可以使用以下命令:

bash

复制代码

docker logs <container_id>

你可以通过 docker ps 查找运行的容器 ID,然后查看日志输出。

5. 调试时挂载本地目录(可选)#

如果你需要调试代码,并且希望挂载本地目录到容器中进行实时编辑,可以使用 -v 参数来挂载本地目录。例如,假设你的本地代码在 /path/to/your/code 目录下:

bash

复制代码

docker run -it -v /path/to/your/code:/app --entrypoint /bin/bash nova-crawler:latest