Dockerがwslから使えない
きっかけは忘れましたが、突然dockerのコマンドが動かなくなりました。
もちろん、docker-composeも同様です。
ERROR: dial unix /mnt/wsl/docker-desktop/shared-sockets/guest-services/docker.sock: connect: no such file or directory
人によってパスの部分は違いがあると思いますが、こんなエラーが出ました。
wsl上に/var/run/docker.sock
っていうシンボリックリンクがあって、これはdocker-desktopっていうwslディストリビューション内のソケットを指しているんですが、これがどういうわけか消えてしまっています。
Dockerを再起動してもwslを再起動しても治りませんでした。
ちなみに、Power Shellからならdockerコマンドが使えました。
wslからdocker daemonへの接続が切れているだけのよう。
直し方
参考:ubuntu running under WSL2 not seeing Docker daemon at unix:///var/run/docker.sock #5096
wsl integrationを有効にしてDocker Desktopを起動すると、wsl内にさっきのsocketなどいろんな関連ファイルのシンボリックリンクを作成するのですが、それらが中途半端に残っているせいで再起動しても治らなかったということらしい。
ので、docker関連のファイルを全て削除します。
sudo find /usr -name "*docker*" -type l -exec rm {} +
sudo find /usr -name "*Docker*" -type l -exec rm {} +
sudo find /usr -name "*kube*" -type l -exec rm {} +
sudo rm /usr/share/doc/docker-ce-cli/changelog.Debian.gz
sudo rm /var/run/docker*
上記コマンドをwslで実行後、dockerを再起動すると治りました。
よかったよかった。