Docker Desktop(WSL2)に、VSCodeのRemote WSLで繋げなかった!
kght6123
おそらく、Remote WSLがDocker Desktopに対応してない?バグ?(2020/06/04現在)があるみたい
代替案として、UbuntuやAlpine Linuxを使う方法も含めて紹介します。
Docker Desktopの仮想マシン(WSL2)に、Remote WSLでつなぐ
- Insider Previewにアップデート。
- Windows10の設定の更新とセキュリティのWindows Insider Programを有効化して、Windows Updateを行う。
(この時はBuild 19635にアップデートされた)
- 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
- Docker Desktopをインストール
- 通知領域のDocker DesktopのSettingsの「GeneralのUse the WSL2 based Engine」と「ResourcesのWSL Integration」を有効にする
-
VSCode Insidersをインストール、Remote WSL拡張機能をインストール
-
VSCodeの左下の緑色の><をクリックして、「Remote-WSL:New Window」をクリック
-
新しい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 # サービスを起動