VSCode remote server.sh не находит узел в wsl docker-desktop

У меня есть:

VSCode v1.46.0

удаленное расширение wsl v0.44.3

ОС Windows 10, сборка 19041.329

Docker Desktop v2.3.0.3

Я пытаюсь открыть VSCode в wsl docker-desktop и каждый раз получаю ошибку, указанную ниже. Я перешел в указанный каталог и увидел файл узла. Я не уверен, что делать?

[2020-06-17 20:30:27.337] Resolving wsl+docker-desktop, resolveAttempt: 1
[2020-06-17 20:30:27.462] Starting VS Code Server inside WSL (docker-desktop)
[2020-06-17 20:30:27.463] Extension version: 0.44.3, Windows build: 19041. Multi distro support: available. WSL path support: enabled
[2020-06-17 20:30:27.751] Probing if server is already installed: C:\WINDOWS\System32\wsl.exe -d docker-desktop -e sh -c "[ -d ~/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321 ] && printf found || ([ -f /etc/alpine-release ] && printf alpine-; uname -m)"
[2020-06-17 20:30:28.100] Probing result: found
[2020-06-17 20:30:28.100] Server install found in WSL
[2020-06-17 20:30:28.101] Launching C:\WINDOWS\System32\wsl.exe -d docker-desktop sh -c '"$VSCODE_WSL_EXT_LOCATION/scripts/wslServer.sh" a5d1cc28bb5da32ec67e86cc50f84c67cc690321 stable .vscode-server 0  ' in c:\Users\Eric\.vscode\extensions\ms-vscode-remote.remote-wsl-0.44.3}
[2020-06-17 20:30:28.345] Setting up server environment: Looking for /root/.vscode-server/server-env-setup. Not found.
[2020-06-17 20:30:28.345] WSL version: 4.19.104-microsoft-standard docker-desktop
[2020-06-17 20:30:28.345] WSL2-shell-PID: 1036
[2020-06-17 20:30:28.345] Starting server: /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/server.sh  --port=0 --use-host-proxy --enable-remote-auto-shutdown 
[2020-06-17 20:30:28.347] /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/server.sh: line 12: /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/node: not found
[2020-06-17 20:30:28.347] VS Code Server for WSL closed unexpectedly.
[2020-06-17 20:30:28.347] For help with startup problems, go to
[2020-06-17 20:30:28.347] https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips
[2020-06-17 20:30:29.404] WSL Daemon exited with code 0

comment
У меня такая же проблема при открытии окна в WSL. У меня есть окно удаленного контейнера параллельно, где тот же код сервера кода vs выполняется внутри контейнера докеров. Итак, я думаю, что-то не хватает в дистрибутиве docker-desktop для запуска node. Замена узла указанием на установку локального узла мне не помогла. Все еще продолжаем расследование.   -  person Matthias Wiedemann    schedule 19.06.2020


Ответы (3)


Проблема в том, что vscode-сервер, установленный на WSL, несовместим с дистрибутивом, предоставленным Docker Desktop. Вам следует использовать официальный дистрибутив Linux из Microsoft Store, то есть Ubuntu.

Дистрибутив docker-desktop исходит из Alpine Linux, который основан на варианте libc под названием musl-libc. Но vscode-server, который устанавливается расширением wsl, построен на основе glibc.

Вы можете увидеть это, сделав это в wsl: apk update && apk add binutils, а затем

readelf -l /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/node | grep "program interpreter"
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

Но в Alpine этой библиотеки нет, поэтому сообщение об ошибке выдает not found.

Поэтому мне было интересно, почему сервер vscode работает внутри контейнера Alpine с расширением Remote Container. Например, начиная с alpine:3.9, вышеупомянутая проверка показывает следующее:

readelf -l /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/node | grep "program interpreter"
      [Requesting program interpreter: /lib/ld-musl-x86_64.so.1]

По какой-то причине расширение Remote-Container имеет некоторый механизм обнаружения для Alpine и использует другую сборку сервера vscode. Я предлагаю вам сообщить о проблеме на https://github.com/microsoft/vscode-remote-release/issues для этой проблемы. В противном случае используйте другой дистрибутив WSL или расширение контейнера.

Некоторые ссылки по этой теме:

person Matthias Wiedemann    schedule 19.06.2020

Была очень похожая проблема сегодня. VScode работал давно и сегодня внезапно прекратил работу.

/home/user/.vscode-server/bin/b5afea7e86cc50f84c67cc690321/server.sh --port=0 --use-host-proxy --enable-remote-auto-shutdown
VS Code Server for WSL closed unexpectedly

В WSL консоли server.sh как-то пусто.
Мое решение: Удалить расширение WSL. rm -rf ./vscode-server. Переустановите расширение WSL, чтобы восстановить поврежденный файл.

person Kai Zhang    schedule 06.02.2021

В моем случае это было исправлено:

  • откройте настройки Docker для Windows
  • снимите флажок Использовать базовый движок WSL 2, затем нажмите Применить и перезапустить
  • поставьте галочку Использовать базовый движок WSL 2 еще раз, затем нажмите Применить и перезапустить

В следующий раз, когда я запустил Remote WSL: New Window, он снова подключился правильно

person miff2000    schedule 11.12.2020