开发容器扩展:`userEnvProbe 花费的时间超过 2 秒。未找到进程。`

Dav*_*lva 6 visual-studio docker visual-studio-code podman vscode-devcontainer

目前,正在尝试从使用转变DockerPodman构建图像时。我可以在 CLI 中很好地构建容器,但在尝试.devcontainersVS-Code. 我收到以下错误:

[27274 ms] Start: Run in container: /bin/sh -c mkdir -p /temp/backup
[27517 ms] [21:15:20] Started initializing default profile extensions in extensions installation folder. file:///root/.vscode-server/extensions
[27583 ms] [21:15:20] ComputeTargetPlatform: linux-x64
[27610 ms] [21:15:20] Completed initializing default profile extensions in extensions installation folder. file:///root/.vscode-server/extensions
[27675 ms] [21:15:20] ComputeTargetPlatform: linux-x64
[27853 ms] Container server: Segmentation fault (core dumped)
[27862 ms] Start: Run in container: # Test for /root/.gitconfig and git
[27863 ms] userEnvProbe is taking longer than 2 seconds. Process not found.
[27883 ms] 
[27883 ms] 
[27884 ms] Start: Run in container: # Copy /Users/david.dsilva/.gitconfig to /root/.gitconfig
[27888 ms] Error: unexpected end of parent stream
        at So.destroy (/Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:106773)
        at So.write (/Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:107514)
        at /Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:109617
        at /Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:95001
        at /Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:97674
        at Object.cb (/Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:104092)
        at c (/Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:102318)
        at /Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:24:102465
        at s (/Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:27:5371)
        at Socket.<anonymous> (/Users/david.dsilva/.vscode/extensions/ms-vscode-remote.remote-containers-0.304.0/dist/extension/extension.js:27:5541)
        at Socket.emit (node:events:525:35)
        at endReadableNT (node:internal/streams/readable:1358:12)
        at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
[27888 ms] Container server terminated (code: 139, signal: null).
[27924 ms] 
[27924 ms] 
[27925 ms] Start: Run in container: mkdir -p '/tmp/devcontainers-04490ea3-c94e-49a0-8331-2568d6056a941692652492684' && cat > '/tmp/devcontainers-04490ea3-c94e-49a0-8331-2568d6056a941692652492684/env-loginInteractiveShell.json' << 'envJSON'
[27961 ms] 
[27961 ms] 
[27962 ms] Start: Run in container: # Cleaning up git config
[27969 ms] Port forwarding connection from 52918 > 40577 > 40577 in the container.
[27969 ms] Start: Run in container: /root/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49794/node -e 
[27973 ms] [21:15:21] No uninstalled extensions found.
[28065 ms] 
[28066 ms] 
[28066 ms] Start: Run in container: command -v git >/dev/null 2>&1 && git config --global --replace-all credential.helper '!f() { /root/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49794/node /tmp/vscode-remote-containers-8af35539-abf9-4831-a6bb-5786d37bcba1.js git-credential-helper $*; }; f' || true
[28144 ms] 
[28144 ms] 
[28534 ms] Port forwarding 52918 > 40577 > 40577 stderr: Connection established
[28569 ms] Port forwarding connection from 52921 > 40577 > 40577 in the container.
[28569 ms] Start: Run in container: /root/.vscode-server/bin/6c3e3dba23e8fadc360aed75ce363ba185c49794/node -e 
[28599 ms] [21:15:21] [127.0.0.1][ab28e5f0][ManagementConnection] New connection established.
[28657 ms] [21:15:21] Log level changed to info
[29490 ms] Port forwarding 52921 > 40577 > 40577 stderr: Connection established
[30492 ms] Port forwarding 52921 > 40577 > 40577 stderr: Error: read ECONNRESET
    at TCP.onStreamRead (node:internal/stream_base_commons:217:20)
[30492 ms] Port forwarding 52918 > 40577 > 40577 stderr: Error: read ECONNRESET
    at TCP.onStreamRead (node:internal/stream_base_commons:217:20)
Run Code Online (Sandbox Code Playgroud)

不确定是什么导致了分段问题,但我认为这与userEnvProbe.

Von*_*onC 0

赏金答案(Docker Desktop,无 podman):

\n

userEnvProbe is taking longer than 2 seconds. Process not found.使用 Docker Desktop 时,在 Visual Studio Code (VS Code) 环境中可能会出现该错误消息。该错误通常与初始化阶段相关,在该阶段 VS Code 尝试探测容器内的环境设置。

\n

首先检查您是否拥有兼容的 VS Code 和 Docker Desktop 版本(如microsoft/vscode-remote-release问题 6024所示,VS Code 版本 1.63.0 和 Docker Desktop 版本 4.3.0)。
\n在某些情况下,开发容器启动会挂起,并userEnvProbe is taking longer than 10 seconds显示错误消息。这表明初始化过程可能会出现延迟,这可能类似于您的2 seconds错误消息类似。

\n

如果您将 Windows Subsystem for Linux (WSL) 与 Docker Desktop 一起使用,则可能存在与 SSH 设置相关的问题,从而导致延迟userEnvProbe问题 6028)。您需要确保 SSH 代理设置正确,并且 shell 的启动脚本中不会等待用户输入。

\n

有时,错误会发生在“设置远程容器”阶段(问题 7005)。这可能与开发容器中的启动脚本的错误配置或问题有关。
\n在某些情况下,错误消息建议避免在 shell 的启动脚本中等待用户输入。这表明启动脚本中可能存在提示或某些交互元素导致延迟。

\n

仔细检查您的devcontainer.json配置文件和 Docker 配置文件是否设置正确。任何错误配置都可能导致userEnvProbe.

\n
\n

mike01010还在评论中提出:

\n
\n

我也看到了这一点。在此命令之后:在容器中运行:

\n
for pid in `cd /proc && ls -d [0-9]*`; do { \\\n  echo $pid ; \\ \n  readlink /proc/$pid/cwd || echo ; \\\n  readlink /proc/$pid/ns/mnt || echo ; \\\n  cat /proc/$pid/stat | tr "\n
Run Code Online (Sandbox Code Playgroud)\n
\n

此命令可能用于容器内的诊断或日志记录目的,以收集和输出有关容器内运行的进程的信息。这可能是故障排除或监控过程的一部分,以了解容器的行为或识别潜在问题。

\n

此命令收集的信息可以帮助识别容器内任何异常行为、不正确的配置或可能导致错误的其他问题userEnvProbe
\n例如,检查容器内所有进程的当前工作目录、挂载命名空间和进程状态可能会发现差异或意外状态,这些可能是潜在问题的线索。

\n
\n

原始答案(与podman相关):

\n

将podman 与 VSCode结合使用时,检查是否:

\n
    \n
  • 一切都已更新(如microsoft/vscode-remote-release问题 6024中所述
  • \n
  • 设置已正确调整,例如Docker: Hostunix:///run/user/1000/podman/podman.sock(将 1000 替换为您的用户 ID,可以通过id -u在终端中运行命令来获取)。并将Docker: Docker Path值更改为/usr/bin/podman\xe2\x80\x8b.
  • \n
  • Podman 服务和套接字已启用(请参阅使用 VS Code 和 Podman 进行远程容器开发,它适用于您的情况)podman system service -t 0 & systemctl enable --now --user podman.socket\xe2\x80\x8b
  • \n
\n

虽然这些检查可能不会直接解决userEnvProbe超时错误,但它们可以帮助确保 VS Code 和 Podman 设置正确配置,从而可能减轻错误。

\n