Docker DesktopをWSL2に対応させる

Windows10(バージョン1909)で無事にWSL2に出来たので、次はDocker DesktopもWSL2を使用するように設定します。

環境

  • Windows10 Pro (バージョン1909)
  • Dokcer Desktop 2.3.0.4 → 2.3.5.1

Docker DesktopのWSL2設定

前からWSl2の設定項目が増えてたのはきづいてました。

  • Settings-General を選択
    □ Use the WSL2 based engine(requires Win 10 build 19018+)にチェックを入れる。

docker-settings

… チェックボックスが無効になってます。
build が19018+ということは、Win10 バージョン 2004以上じゃないとこちらはまだできないみたいですね。

ちなみにdocker desktopは8/29時点で最新版。

docker-version

まだあきらめません。
docker desktopは、Edge Releaseというのがありまだ正式リリースじゃないバージョンを先行して試せます。

Downloadは、先ほどの設定画面のリンクから。

docker-edge

Edgeリリースページを見てみると、2.3.5のところにDocker Desktop now supports running on WSL 2 on the latest updates of Windows 10 versions 1903 and 1909 (in addition to the existing support for version 2004).と記載があります。やった!

Docker Desktop Edge版のインストール

ということでEdge版をインストールしていきます。(おかしくなったらまた戻せばいいし。。)

  1. とりあえず現時点で最新版の2.3.5.1をダウンロード

  2. ダウンロードしたらあとはインストーラ立ち上げて進めるだけ。
    既存バージョンのアンインストールは不要です。直接バージョンアップできます。

    docker-desktop-install

  3. インストールを進めていきます
    docker-install

  4. インストールが終わったらPC再起動

  5. 再起動しDocker Desktopを起動(自動起動なら勝手に起動)
    WSL2がサポートされたマシンだよ!と教えてくれました。
    docker-desktop-wsl2

  6. もちろんEnable WSL2をクリック
    Docker Desktopが再起動します。こころなしか再起動も早くなった気が。。

  7. 再起動後に設定確認
    docker-desktop-wsl2-enabled
    無事に設定できました

Docker Desktopで使用するディストリビューションの選択

最後にDocker Desktopで使用するLinuxディスとリビューションの設定を行います。
WSL2の機能を最大限に利用するには、コンテナからバインドするファイルをLinux上にしないといけません。Windowsからマウントされている場所だと意味がない。(パフォーマンスUPにつながらない)

前回の記事でWSL2を設定した際、Ubuntu 20.04をインストールしたので、そちらを利用するようにしてみます。
とりあえず設定せずにUbuntu 20でdockerコマンド実行してみます。

$ docker --version

The command 'docker' could not be found in this WSL 2 distro.
We recommend to activate the WSL integration in Docker Desktop settings.

See https://docs.docker.com/docker-for-windows/wsl/ for details.

dockerコマンドが見つからないと怒られます。

それでは設定をしてみます。

  1. Docker DesktopのSettingsResourcesWSL INTEGRATION へ移動
    インストールされているディストリビューションが自動で表示されてます。
    docker-dektop-distribution

  2. Ubuntu-20.04を有効化し「Apply & Restart」をクリック
    docker-dist-ubuntu20

  3. Ubuntu 20.04のターミナルを一度閉じて開きなおして再度コマンド実行

    $ docker --version
    Docker version 19.03.13-beta2, build ff3fbc9d55

    無事にUbuntu 20.04からdockerコマンドが実行できました。

これでDocker DesktopのWSL2設定は終わりです。
記事にも記載しましたが、WSL2の恩恵を最大限受けるにはWindowsファイルシステムをコンテナに直接マウントはNGになってます。WSL2バージョンのLinuxファイルシステムを使わないといけないので、開発のイメージは「Windowsマシン」→「Linux(wsl2)」 → 「Dockerコンテナ」という感じです。

私はいままでWindows側ディレクトリを直接マウントしていたので、開発環境の調整が少なからず発生してしまいます。ただパフォーマンスが大幅に改善するみたいなので徐々に移行していく予定です。

※ ちなみにWSL2に対応するDoker Desktopは、Hyper-Vが不要となったのでWindows10 Homeでも利用できるようです。