Docker Desktopをアップデートしたら、
Docker Desktop has detected that you shared a Windows file into a WSL 2 container, which may perform poorly. Click here for more details.
というエラーメッセージが表示されるようになりました。
うざいなぁと思いつつも、放置していたのですが、たった今解決したのでその解決方法の共有。
(Click hereと書いてあるのにクリックしても何も起きません。それどこかメッセージが消えます)
Volumesに指定してコンテナにマウントするファイルはWSL上のフォルダになければいけない
まぁ、読んで字のごとくなのですが、DockerコンテナはWSLのlinuxカーネル上で起動しているので、windows上のファイルにアクセスするのは推奨されないということでした。
ここに、詳しいことが書いてありました。
DockerコンテナとWSLのLinuxカーネルは完全に別のシステムとして動いているように見えますが、キャッシュなどを共有しているそうです。
ただ、そのファイルがwindows上にあると一回WSLに乗せ換える作業が必要になるということでしょうか?
そもそも、WindowsとLinuxじゃファイルシステムが違っていたり、ファイルを管理する方法がが違っていたりすると思うんですけど、そこらへんはどうなのでしょうか?これを機に調べてみようと思います。
フォルダを移してWSL上で実行すれば解決
これも普通なことしかしてませんが、WSL上にフォルダを移してWSLでDockerを起動すれが解決できました。
WSLのフォルダをwindowsのエクスプローラーに表示させるには、WSL起動後に\\wsl$\Ubuntu\home\
をパスに指定すればOKです。
普通にフォルダを移して、WSLのコンソール上でコンテナを起動してください。
WSL上にフォルダがないと、ホットリロードが効かないとかいろいろLinuxやMacでは普通なことができなかったりしますよね。普段はWSL上に置いているのですが、今回は横着してました。
自分はWSLない時代のWindowsでの開発を知らないのでいろいろなことが当たり前に思えていますが、こういうふうにないかえらーが起こるとWSLってすごい技術だなと実感します(逆にちゃんと動いている時は何とも思わない)。
それでは。