はじめに
Windows で Docker コンテナがらみの開発・動作確認をやってるとディスク IO がトロくて、近頃は WSL2 と組み合わせて Ubuntu の上に作業フォルダを作って VSCode で作業しているのですが ( npm 速いし )、ちょくちょく変なエラーが出ることがあるので、対策をまとめておきます。
リモート拡張ホスト サーバーへの接続に失敗しました
「Failed to connect to the remote extension host server (Error: WebSocket close with status code 1006) 」などで報告されている問題で、現状未解決。
いい感じに回避策がまとめられてますのでそちらへ。要点は「プロキシ有無にかかわらず localhost に直接接続させること」と「LxssManager サービスを再起動すること」です。
(2021/03/30 追記)
これは VSCode のというより WSL2 の不具合 だそうで、 Insider Preview Build 20231 で解決しているそうです。とはいえ、これだけのために insider preview にアップデートするのはなぁ…。
<3>init: (4010) ERROR: UtilConnectToInteropServer:300: connect failed 2
なにこの謎のエラー?これが発生すると docker build
や docker run
が何も通らなくなって凹みます。これも「 [WSL2] [Interop] Keep a single shared /run/WSL/* socket 」などで既知の問題。
これはどうも、ソケット通信のソケット名を示す環境変数 WSL_INTEROP
の値が「ずれてしまう」のが原因とのことで(なんでそんなことが?)、上記 GitHub issue に回避策が示されています。zsh の例として示されていますが、bash でも動きます。 .zshrc
または .bashrc
に下記のような関数を定義します:
fix_wsl2_interop() {
for i in $(pstree -np -s $$ | grep -o -E '[0-9]+'); do
if [[ -e "/run/WSL/${i}_interop" ]]; then
export WSL_INTEROP=/run/WSL/${i}_interop
fi
done
}
エラーが発生したらいつでも fix_wsl2_interop
を実行すればよい、という寸法。
他にもあったら追記していきます。