34
55

More than 3 years have passed since last update.

WSL2でDockerを爆速化

Last updated at Posted at 2020-10-09

ウチのWin10もようやくこの前のWindowsUpdateでWSL2が有効になりました。

早速、公式の手順に従ってDockerをWSL2に対応させて行きましょう
https://docs.docker.com/docker-for-windows/wsl/

その前に、What's WSL2

WSLはWindowsSubsystemForLinuxの略称
WindowsのコマンドラインでLinuxのコマンドが使えるよー的なものだとおもって貰えば良いでしょう。

WSL2はWSLのバージョン2になります。ただし、WSL1の完全上位互換ではなくメリットとデメリットがあります。
https://docs.microsoft.com/ja-jp/windows/wsl/compare-versions

まずは前提確認

  1. Docker、バージョンは2.3.0.2以上
  2. Windows10、バージョン 2004、ビルド 19041 以上

WSL2をインストールする

まずは、MicrosoftストアからUbuntuを入手

WSLにつかうLinuxOSは汎用性を考えてUbuntuにしました。
ファイルサイズが大きいですが、WSL用には一番オススメできるかと思います。
https://www.microsoft.com/ja-jp/p/ubuntu/9nblggh4msv6?activetab=pivot:overviewtab

WSL2にアップデート

そのままだと、WSL1でインストールされるので、WSL2にアップデートしましょう。

# インストールされているWSLとバージョンを確認
wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         1

*がついているのがデフォルトのWSLです。WSLに複数のLinuxを入れているとたくさん出ます。
通常は、デフォルトのWSLがDockerと統合されます。

# WSLをバージョンアップ
wsl --set-version Ubuntu 2

# インストールされているWSLとバージョンを再確認
wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu                 Running         2

UbuntuのVersionが2になっていれば成功です。

早速 Docker For WindowsでWSL2を有効に

  1. Settings > Generalと進んで、Use WSL 2 based engineにチェックしてApply & Restart
    image.png

  2. Settings > Resources > WSL Integration デフォルトのWSLで統合機能が有効になっています。
    image.png

これで、いままでHyper-V上の仮想マシンで動いていたDockerが、WSL2で動くようになりました。

が、落とし穴

WSL2は完全なLinuxになったもののWindowsのファイル共有でパフォーマンスが落ちてしまうデメリットがあります。
そのため、volumesでWindowsのローカルフォルダをコンテナに共有していた場合、体感的にかなり遅くなってしまいました。

Linuxのファイルシステムにソースコードを配置することで解決

wslのWindowsとの共有領域である/mnt/c/配下をvolumesで共有すると遅くなってしまうので、
プログラムのコードはそれ以外の場所に置きましょう。
公式のベストプラクティスにもそう書いてあります。
https://docs.docker.com/docker-for-windows/wsl/#best-practices

WSL2のDockerでVSCodeのDevContainer開発

WSL内でcodeコマンドを実行すれば、WindowsのVSCodeがRemote-WSLモードで開く!!!

code ~/hoge_workspace/

あとは、WSL内のフォルダにdevcontainer.jsonを用意していつもの手順でReopen in Container
image.png
image.png

DevContainer関連

WSLのディレクトリにWindows10のエクスプローラーからアクセス

WSL内のLinuxが起動した状態で以下のネットワークパスにアクセスすることで、WSL内のフォルダにエクスプローラーでアクセス可能です。
そのままWindowsからファイルを編集することも可能です。

\\wsl$\
34
55
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
55