About

本サイトについて

趣味で開発したプログラムや開発メモを載せています。
ソースコードはGithubで公開しつつ、なるべく後から分かるように解説に努めてますので、
誰かのお役に立てれば嬉しいです。

プロフィール

kght6123

佐賀県出身で1985年生まれ。
三重県四日市市在住のシステムエンジニア。家庭を大事にしたい2児の父。

kght6123.page

Docker Desktop(WSL2)に、VSCodeのRemote WSLで繋げなかった!

2020-11-30T22:25:08.200Z

Remote WSLが対応してない?直近、Alpine上のDocker使うため困ってないので放置中

おそらく、Remote WSLがDocker Desktopに対応してない?バグ?(2020/06/04現在)があるみたい

代替案として、UbuntuやAlpine Linuxを使う方法も含めて紹介します。

Docker Desktopの仮想マシン(WSL2)に、Remote WSLでつなぐ

  1. Insider Previewにアップデート。
  • Windows10の設定の更新とセキュリティのWindows Insider Programを有効化して、Windows Updateを行う。

(この時はBuild 19635にアップデートされた)

  1. WSL2を有効化
  • PowerShellを開いて、下記のコマンドを打つ
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
  1. Docker Desktopをインストール
  • 通知領域のDocker DesktopのSettingsの「GeneralのUse the WSL2 based Engine」と「ResourcesのWSL Integration」を有効にする
  1. VSCode Insidersをインストール、Remote WSL拡張機能をインストール

  2. VSCodeの左下の緑色の><をクリックして、「Remote-WSL:New Window」をクリック

  3. 新しいVSCodeが開く

  • Docker Desktopにつながった、新しいVSCodeが開くはずだった!けこ、下記のエラーが発生する。
[2020-06-04 12:53:03.031] /root/.vscode-server-insiders/bin/595d2b9b916d063aadfc2c1a8c8f6df5b45572a8/server.sh: line 12: /root/.vscode-server-insiders/bin/595d2b9b916d063aadfc2c1a8c8f6df5b45572a8/node: not found
[2020-06-04 12:53:03.033] VS Code Server for WSL closed unexpectedly.
[2020-06-04 12:53:03.033] For help with startup problems, go to
[2020-06-04 12:53:03.033] https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips
[2020-06-04 12:53:07.756] WSL Daemon exited with code 0

VSCodeをアップデートしたり、Docker Desktopを再起動や再インストールしたけどうまくいかず。

WSL2のUbuntuを入れて、Remote WSLでつなぐ(Ubuntu内のDockerは、Docker DesktopのWSL Integrationを使う)

先にストアからUbuntuをインストールして、起動して、初期設定をしておく

(起動しないときは、https://aka.ms/wsl2kernel のカーネルのアップデートを試してみる!)

通知領域のDocker DesktopのSettingsの「ResourcesのWSL Integration」の「Ubuntu」を有効にする

下記のコマンドでVSCodeをWSL2のubuntuにつないだ状態で起動する

wsl -d ubuntu code-insiders .

お好みで、ubuntuをWSL2のデフォルトに変更する

rem wslのリストを表示する
wsl --list
rem ubuntuをWSL2のデフォルトに変更する
wsl -s ubuntu
rem VSCodeをWSL2のデフォルトにつないだ状態で起動する
wsl code-insiders .

Windows側にアクセスするのは、WSL1より遅いから、Linuxのディスク上にプロジェクトをつくること (Windowsに置くとyarn installに12分近くかかって、びっくりする)

vmmem.exeがメモリをめちゃくちゃ食い始めた場合は.wslconfigをWindowsのユーザディレクトリの配下につくる

[wsl2]
memory=3GB
swap=0

WSL2を再起動する

wsl -l
wsl -t ubuntu
wsl -t docker-desktop
wsl -t docker-desktop-data

Alpine WSLをWSL2に変換して、Remote WSLでつなぐ(同じくWSL Integrationを使う)

Alpine Linuxを使うとWSL2のリソースが抑えられそうなので、Storeからダウンロードして試しに使ってみる

# Microsoft Storeから「Alpine WSL」をダウンロードする。起動してデフォルトユーザと、ルート兼デフォルトユーザのパスワードを設定する!
wsl -l -v # WSLのリストを表示
wsl --set-version Alpine 2 # WSL2に変換
wsl -l -v # WSL2に変換を確認
wsl -s Alpine # WSLのデフォルトを「Alpine Linux」にする
wsl # WSL起動
su - # 「Alpine Linux」にrootでログインする
apk update && apk add libstdc++ && apk add openrc docker docker-compose # 必要パッケージのインストール
# あとは、Docker Desktopの設定の「ResourcesのWSL Integration」と「Alpine」を有効にして
# VSCodeのRemoteWSLから普通につなげるだけ!

【メモ】WSLの停止と開始(WSLの再起動)

メモリが8GBしかないマシンで、WSL使いつつ、メモリをたくさん使うアプリを開くとWindowsが不安定になるので、 サービスをあらかじめ停止しておく

net stop LxssManager # サービスを停止
wsl -l -v # 停止を確認
wsl -t Alpine # 起動してたら停止
net start LxssManager # サービスを起動