docker desktop WSL2 Windows feature ファーストインプレッション

Windows10 version 2004 (May 2020 Update)のdocker desktopでWSL2のコンテナーと連携する方法についてまとめたメモです。Windows10 version 2004 (May 2020 Update)でWSL2を有効にする - bluebird の続きです。

blog.fieldnotes.jp

Windowsならびにdocker desktopは以下のバージョンで検証しています。

  • docker desktop 2.3.0.2
  • Windows10 Professionalバージョン2004(ビルド 19041.264)

docker desktopのサイトよりdocker desktopのインストーラーをダウンロードしてインストールします。

hub.docker.com

インストール時に「Enable WSL2 Windows Feature」を選択します。

f:id:setoazusa:20200518232315p:plain

docker desktopのバックエンドが有効になっていることを確認するには、wsl -l -vコマンドを実行して、docker-desktopおよびdocker-desktop-dataディストリビューションのSTATEがRunnning になっていることを確認します。

> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-18.04           Running         2
  Ubuntu                 Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

WSLディストリビューションで docker desktopとDockerエンジンのバックエンドを共有するには、docker desktopの「Settings」画面の「Resources」→「WSL INTEGRATION」の「Enable Integration with my default WSL distro」ないし「Enable integration with additional distros」にチェックを入れて「Apply & Restart」を選択します。WSLディストリビューションLinuxにDockerをインストールする必要はありません。 f:id:setoazusa:20200518233014p:plain

WSLディストリビューションがdocker desktopと同じDockerエンジンを使っている場合は、/usr/bin/docker コマンドの向き先が /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker になっています。

azusa@hayabusa:~$ readlink -f /usr/bin/docker
/mnt/wsl/docker-desktop/cli-tools/usr/bin/docker

docker ps -aコマンドを実行すると、docker desktop(Windows)上とWSLディストリビューション上で同じコンテナーが存在していることがわかります。

PS C:\Users\hiroy> docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED
STATUS                      PORTS               NAMES
217de94d34d9        hello-world         "/hello"            19 seconds ago
Exited (0) 19 seconds ago                       jolly_golick
93565eb0d336        hello-world         "/hello"            26 seconds ago
Exited (0) 25 seconds ago                       funny_stonebraker
PS C:\Users\hiroy> ubuntu
azusa@hayabusa:~$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED
STATUS                         PORTS               NAMES
217de94d34d9        hello-world         "/hello"            About an hour ago
Exited (0) About an hour ago                       jolly_golick
93565eb0d336        hello-world         "/hello"            About an hour ago
Exited (0) About an hour ago                       funny_stonebraker

次の画面は、docker desktopのWSLのバックエンドでRuby on Railsの開発環境のコンテナーを起動して、Visual Studio Code上で開発している様子です。

f:id:setoazusa:20200518235914p:plain