カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

Docker Desktopを実行したときに「Unexpected WSL error」が発生する

掲題のエラーが発生したので、解決までに実施した内容を備忘として残しておきます。

実施作業

手っ取り早く解決方法を知りたい人向け

  • "regedit"でレジストリエディタを起動して、「HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\ClassIndex\{A9B7A1B9-0671-405C-95F1-E0612CB4CE7E}」を見つけて手動削除する

レジストリキーの操作はWindowsの挙動に影響を与える可能性があるので、実施される際は自己責任でお願いします。(免責用)
※自分は上記レジストリキーのみ削除しましたが、今のところ動作に影響は出ていません


実行環境


発生事象

特に特別なことはした記憶はないですが、ある日急にDocker Desktopを起動しようとしたところ以下のエラーが出力されるようになりました。


WSL調査①

エラー内容を見るとWSLが原因っぽいので、PowerShellからWSLが実行できるか確認したところ、そもそもWSLが見つからないとエラーが出ました。

PS C:\Users\xxx.xxx> wsl.exe --list
要素が見つかりません。
Error code: Wsl/ERROR_NOT_FOUND



エラーメッセージで検索すると以下のページがヒットしました。
github.com

ここの記載を見ると管理者権限でターミナルを実行するとWSLが実行できるらしいので試してみたところ、確かにエラーが出ずにリストが表示できることを確認できました。

PS C:\Users\xxx.xxx> wsl.exe --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)

毎回管理者権限で操作するわけにはいかないので、根本解決できる方法を追加調査してみます。

WSL調査②

同じGitHub issueを読んでいくと以下のコメントを見つけました。

ありがとう。これで我々の仮説が確定しました:古いWSLがインストールされていて、最新のパッケージと競合しているようです。

やってみてくれる?

削除します:HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\ClassIndex\{A9B7A1B9-0671-405C-95F1-E0612CB4CE7E}
これで問題が解決するかどうかを確認する



どうやらレジストリエディタで「HKEY_LOCAL_MACHINE\SOFTWARE\Classes\PackagedCom\ClassIndex\{A9B7A1B9-0671-405C-95F1-E0612CB4CE7E}」を見つけて削除したら良いみたいです。
"regedit"でレジストリエディタを開いて、該当のキーを削除してみます。
レジストリの取り扱いは特に注意してください



レジストリキーを削除した後に手動でDocker Desktopを起動したところ、今度はエラーが発生せずに起動されました。


感想及び所感

Issueのコメントに書いてありましたが、原因は古いレジストリキーが削除されていなかったことだったようです。
次回のアップデートで更新されるようなので、直接レジストリキーを削除するのが不安な方は次のアップデート後に解消されたことを確認してみてください。

確認ありがとう。これで、このレジストリキーが以前のインストールで残っていることが問題であることが確認できました。次回のアップデートでは、このレジストリキーを自動的に削除するようにインストールロジックを更新します。

この記事がどなたかの参考になれば幸いです。