📝 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

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


3️⃣ 清理 VS Code Remote-Containers 扩展缓存#

关闭 VS Code 完全退出#

taskkill /F /IM Code.exe

删除旧扩展目录(PowerShell 版本)#

# 删除 Remote-Containers / Dev Containers 扩展残留
Remove-Item -Recurse -Force "$env:USERPROFILE\.vscode\extensions\ms-vscode-remote.remote-containers*"
Remove-Item -Recurse -Force "$env:USERPROFILE\.vscode\extensions\ms-vscode-remote.remote-containers*"

删除 VS Code Remote 缓存(可选)#

Remove-Item -Recurse -Force "$env:USERPROFILE\.vscode-remote"

删除 VS Code 扩展缓存 & 工作区缓存#

Remove-Item -Recurse -Force "$env:APPDATA\Code\CachedExtensionVSIXs"
Remove-Item -Recurse -Force "$env:APPDATA\Code\User\workspaceStorage"

如果某些文件被占用无法删除,确保 VS Code 已完全退出或用 -ErrorAction SilentlyContinue 忽略错误。


4️⃣ 重装 Dev Containers 扩展#

  1. 打开 VS Code

  2. Extensions 面板 → 搜索 Dev Containers(或 Remote-Containers)

  3. 点击 Install

  4. 安装完后 Reload Window

Ctrl+Shift+P → Developer: Reload Window

5️⃣ 验证 Remote-Containers 功能#

  1. Remote Explorer → Containers → 选择容器 → Attach

  2. 或右键 “Reopen Folder in Container”

  3. 检查是否能正常 attach,刷新是否报错

✅ 成功表示问题彻底解决。


6️⃣ 额外小技巧#

  • PowerShell vs CMD 命令差异

    • rd /s /q 是 CMD 格式,PowerShell 要用 Remove-Item -Recurse -Force
  • 彻底杀进程

    • Remote-Containers / Dev Containers 操作失败多数是缓存锁定问题
  • 防病毒/防火墙

    • 有时 Windows 防护会阻塞命名管道,必要时临时关闭排查
  • 常备命令

docker context ls
docker ps
docker exec -it <container> sh
docker exec -it <container> bash
taskkill /F /IM Code.exe

7️⃣ 总结#

  1. 确认 Docker context 正确
  2. 彻底清理旧扩展 + VS Code 缓存主要是这个
  3. 重装 Dev Containers 扩展并 Reload Window
  4. 测试 attach / Reopen in Container

按此流程操作,VS Code Remote-Containers 连接 Docker 容器失败的绝大多数问题都能解决。

配置一个容器 使用ssh#

apt update
export LC_ALL=C.UTF-8
apt install openssh-server
apt install curl wget sudo git
apt install python3 python3-pip python3.13-venv -y
useradd -m -s /bin/bash devuser && echo "devuser:Dev@123456" | chpasswd && echo "devuser ALL=(ALL) ALL" > /etc/sudoers.d/devuser && chmod 440 /etc/sudoers.d/devuser
mkdir -p /run/sshd
chown root:root /run/sshd
chmod 755 /run/sshd
/usr/sbin/sshd

# 删除用户
#userdel -r devuser

wget https://github.com/gogs/gogs/releases/download/v0.13.4/gogs_0.13.4_linux_amd64.tar.gz
tar -xzvf gogs_0.13.4_linux_amd64.tar.gz