Docker Desktop for WSL2を使ってみる
Build 2020にてWindows Subsystem for Linux 2(WSL2)の正式リリースが発表されました。
詳細をキャッチアップできていたわけではありませんが、先日Windows Insider Programに入った副産物としてWindows 10のバージョン2004が入手できたので設定してみることにしました。
WSLとは?
LinuxをWindows上で動かすための互換レイヤーです。
Windows環境上でほとんど完全なLinuxが動くことにより、各ディストリビューション用のパッケージシステムがそのまま利用できるという利点があります。エンジニア以外の方には「何のこっちゃ」って感じだと思いますが、これはかなり革新的でした。何せWindowsで apt-get
が叩けるのですから。
「Linuxを動かすだけならHyper-Vでいいじゃないか」と思われるかもしれませんが、このWSLはWindows10 Proであれば特にサードパーティの製品をインストールすることなく使えるうえ、起動も数秒とハイエナ的に速く、ベースで必要とするメモリも僅かであるなど多くのメリットがあります。
ちなみに↓がWSLのUbuntu上で apt-get
を叩いてみたものです。
WSLとWSL2の違い
外見えにはさほど変わっていないように見えますが、中身は若干異なります。
WSLではLXCoreというサブシステムがLinuxの命令をWindowsの命令に変換しており、厳密な意味でのLinuxカーネルは動いていませんでした。
それに対しWSL2は軽量仮想マシン上でLinuxカーネルバイナリを動作させます。Windowsとはその仮想マシンを経由してやり取りします。そのためWSL2ではコンテナもそのまま起動できます。
これのメリットを享受できるのがDockerです。WSL以前、WindowsでDockerを動かすにはHyper-V上の小さいLinuxマシンを咬ませるしかありませんでした。WSL2ではこれが不要になります。つまり理論上Windows 10 Homeでも動かせるようになるのです。
WSL2をインストールする
それでは早速WSL2をインストールしてみましょう。
既にDockerを常駐させている場合はちょくちょくエラーが出て怖気づくかもしれませんが、耐えてください。
とはいえ、基本的には公式ドキュメントの通りにコマンドを叩いていけばインストールできると思います。
私の環境の場合、OSのバージョンを2004にした瞬間にDockerが「WSL2ベースのエンジンを使えるよ!」と教えてくれたので分かりやすかったです。ただしそれの言う通りに進めていたらエラーとなりましたが(笑)
という流れがあって調べ辿り着いたサイトが上記でした。
管理者権限のPowerShellで次の通り実行します。
まずWSLが有効になっていない場合は有効にします。
$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
WSL2に更新します。
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
マシンを再起動してから、WSL2を既定のバージョンに設定します。
$ wsl --set-default-version 2
Dockerの設定を開いて、「Use the WSL 2 based engine」にチェックを入れればOKです。
とりあえずdocker ps
何にも面白くありませんが、一応。