参考URL: https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
Windows 10の更新(May 2020 Update)により、WSL2が利用できるようになりました。これにより、Docker DesktopがHyper-Vなしでも動くようになったようです。この記事ではHyper-Vで動いていたDocker Desktopを、WSL2上で動くようにする方法を書きます。
WSLとは
Windows Subsystem for Linux(WSL)とは、Windows上でLinuxを動かすことができるようになる機能です。LinuxはWindowsと同じOSで、イメージとしてはWindows PCの中に仮想的なLinux PCが存在するようになります。Linuxについて基本を総ざらいしたい方には以下の書籍がおすすめです。(クリックするとAmazonページが別窓で開きます。)
Windowsのバージョン
2020/5/28に配布がスタートしたWindows10のバージョン2004であることがWSL2を有効にする条件です。それ以前はWindows Insider Programで先行インストールできましたが、バージョン2004で正式公開されました。Windows Insider Programをのやめ方はこちらの記事で紹介しています。
PowerShellでの準備
参考URLにある通り、以下のコマンドをPowerShellで実行して再起動してください。dism...コマンドを実行したら再起動しましょう。PowerShellは管理者権限で実行するように注意してください。PowerShellはWindowsキーを押し、Power
などと検索すると出てきます。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
wsl --set-default-version 2
うまくいけば、画像のように表示されるのですが、私はこの時点ではwsl --set-default-version 2
がうまくいかなかったので、次のステップでインストールしました。
- Ubuntuをインストール(Ubuntuの入手を参照)
- Linuxカーネルの更新(Linuxカーネルの更新を参照)
- Ubuntuをアンインストール(Windowsキーを押し、Ubuntuで検索、右クリックからアンインストール)
wsl --set-default-version 2
を実行- Ubuntuをインストール
先にUbuntuをインストールしてしまうと、WSL1になってしまいます。WSL2を利用したい場合は先にwsl --set-default-version 2
を実行しないといけないようです。
Linuxカーネルの更新
Linuxカーネルの更新が求められた場合は以下のリンクを参考に、Linuxカーネルを更新してください。
Ubuntuの入手
Microsoft StoreからUbuntuを入手します。以下のリンクからMicrosoft Storeのページにアクセスできます。
Windowsキーを押し、Ubuntu
などと検索すると入手したUbuntuが出てきます。これをクリックするとインストールが始まります。ユーザ名とパスワードを求められるので入力すると、インストールが完了します。
私はこのスクショを撮影した時点では失敗していたので、VERSIONのところが1になってしまっていますが、成功していればVERSIONのところが2になっているはずです。
Docker Desktopの設定
Docker Desktopのインストールは飛ばします。Docker Desktopを起動し、タスクトレイのアイコンを右クリック、Settingsをクリックします(画像一枚目)。Generalタブから、Use the WSL2 based engineのチェックマークをつけます(画像二枚目)。Resourcesのタブから使用したいUbuntuのバージョンを選びます(画像三枚目)。これまでの説明は全部Ubuntu 18.04をインストールしたときのスクリーンショットを使っていましたが、Ubuntu 20.04があることに気づき、ここでは20.04が表示されています。
Hyper-Vを切ってみる
本当にHyper-Vなし(Windows home edition)でもできるのか確かめるために、Hyper-VなしでDocker Desktopを起動してみました。うまくいってそうに見えます。
しかし、一つ気になる症状がありました。Windowsの機能からHyper-Vのチェックを外し、再起動してからDocker Desktopを立ち上げるとうまくいくのですが、以下のコマンドからHyper-Vを無効化して再起動し、Docker Desktopを立ち上げるとエラーが出てしまいました。
bcdedit /set hypervisorlaunchtype off
エラーのリンクからこちらのページに飛ばされます。Virtualizationすなわち仮想化はEnabledになっているので、Hyper-Vを無効化した時の問題なのでしょうか。
Hyper-VやWSL 2を手動でアンインストールしたり、仮想化を無効にするとDocker Desktopが起動しない
と書いてあります。