さっきDocker for Windowsを起動したら上記のメッセージがポップアップされた。
翻訳
英語で書いてあるので、とりあえずGoogle翻訳にぶち込んでみる。
お使いのシステムはWLS2をサポートしています Docker Desktopは、Hyper-Vの代わりにWSL 2を使用して、パフォーマンスを向上させ、WSL2ディストリビューションとの相互運用性を提供できます。 ・既存のコンテナーとイメージはWSL2バックエンドに移動されません ・一般設定でHyper-Vに戻すことができ、データは引き続き存在します ・Hyper-Vデータを削除する場合は、[トラブルシューティング]メニューで削除できます
WSL2とは
WSLとはWindows Subsystem for Linuxの略で、WindowsでLinux系のコマンドとか使えるようにするやつ。
で。
WSL2からついにGUIアプリの使用も可能になったみたい。
Windows 10 用 Windows Subsystem for Linux のインストール ガイド(2020/09/15更新)
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
マイクロソフト、「WSL 2」でLinuxのGUIアプリを利用可能に(2020/09/29)
https://japan.zdnet.com/article/35160162/
これでほぼほぼWindowsでLinux環境が動かせるようになったってことかな?
なのでもうHyper-V上で仮想環境を動かさなくても、WSL2で動作させればパフォーマンスも良くなりますよってことだと思う。
どうすりゃいいの?
現在、すでにHyper-V上で開発しているコンテナーがある。
一応説明には既存のコンテナーとイメージは残りそうなことが書いてあるので、「Enable WSL 2」をクリックしてみる。
すると、上記のメッセージが。
WSL2のインストールが不完全です。 WSL 2 Linuxカーネルは、別のMSI更新パッケージを使用してインストールされるようになりました。 リンクをクリックし、指示に従ってカーネルアップデートをインストールしてください: https://aka.ms/wsl2kernel. Linuxカーネルをインストールした後、[再起動(Restart)]を押します。
言われた通り、リンクをクリックしてみる。
Microsoftのサイトに飛ぶので、download the latest WSL2 Linux kernelリンクをクリックする。
msiファイルがダウンロードされるので、ダウンロード後、msiファイルを起動する。
インストールウィザードは一回「Next」をクリックするくらいなので省略。
Linuxカーネルのインストールが完了したら、もとのメッセージウィンドウに戻って「Restart」ボタンをクリックしてDockerを再起動する。
Linuxカーネルがインストールされていれば、正しくDocker for Windowsが起動される。
WSL2起動の状態でHyper-Vのコンテナは起動できる?
正直、一番気になっていたのはここ。
今後、新しく作成する環境はWSL2ベースでいきたいが、従来の環境は開発が完了するまでそのまま使いたい。
早速、従来の仮想環境の起動を試してみる。
あわわわわ…なんか明らかに普段見ない動きをしてらっしゃる…
これは…コンテナをWSL2版で再生成してる…のか?
もとの環境にもよるだろうけど、10分ほどかかって初回起動は終了。
さて、まともに動くのか?
WSL2に置き換えられた環境で動作確認
今回の環境はLaradockで作成していたLaravel環境。
動かしてみると表示はされるが、なぜかstorageへのシンボリックリンクがうまく動いていなかった。
php artisan storage:link
を実行すると
The "public/storage" directory already exists.
と表示されて、たしかにpublic直下に「storage」は存在する。
だが、シンボリックリンクにはなっておらず、リンクファイルだけが残っている感じだった。
なので、rm storage
で、リンクファイルを削除してから、もう一度php artisan storage:link
で生成する。
今度はちゃんとシンボリックリンクとして生成され、storage以下を見に行けるようになった!
いまのところシンボリックリンク以外は問題ないけど、使っているうちに問題出てきそうなので、都度メモしようと思う。
それにしても、Hyper-V版より、処理速度が落ちたと思うのは僕だけだろうか…?