Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
5
Help us understand the problem. What are the problem?

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

はじめに

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
5
Help us understand the problem. What are the problem?