23
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VSCode/WSL2/Docker の組み合わせで遭遇するエラーとその対策

Last updated at Posted at 2021-02-23

はじめに

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 builddocker 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 を実行すればよい、という寸法。

他にもあったら追記していきます。

23
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?