LoginSignup
77
69

More than 3 years have passed since last update.

Docker Desktop for WSL 2 を入れてみました

Last updated at Posted at 2019-08-02

2019年10月公開の Docker Desktop WSL 2 の最新版である Backend版の動作検証は以下リンクをご参照ください。
https://qiita.com/SHIRANO/items/ebd007ba148b4651a5df


7/31に公開されたDocker Desktop for WSL 2(Technical Preview)の動作について検証しました。

まず前提環境などは、このdockerブログにある「Want to give it a go?」の通りに導入・設定を行います。
https://blog.docker.com/2019/07/5-things-docker-desktop-wsl2-tech-preview/

今回検証したWindows 10は「ビルド18945.1001」となっています。


Docker Desktopを起動した後の設定などは、従来と同様にWindowsタスクバーのDockerアイコンで行います。
1.png
WSL 2 Tech Preview メニューが追加されているのが分かります。

メニューを選択してStartボタンを押します。
2.png
従来のデーモンに戻す場合は「docker context use default」と記述されています。

WSL 2のUbuntuで確認(ps -ef)してみるとdockerデーモンが確認できます。
3.png

次にdocker run hello-world を実行します。
4.png
hello-world:latestがpullされて実行されました。
Docker Desktop for WSL 2の導入のみでWSL 2上のUbuntuでdockerコマンドが使用可能であることを確認できました。

さらにこの状態でWindowsのコマンドプロンプトからも確認してみます。
5.png
Windowsのコマンドプロンプトからの実行では、hello-world:latestがpullされずに実行されました。

docker context ls で確認すると、現在のDocker EndpointがWSLとなっている事が確認できます。
6.png

ここでWindowsのコマンドプロンプトからDocker EndpointをデフォルトのDocker DesktopVM上のDockerデーモンに変更します。
C:¥> docker context use default
docker context lsで確認するとdefaultに変更されているのが確認できます。

この状態で再度docker run hello-world を実行します。
7.png
今度はコンテナイメージがpullされてから実行されました。

もちろんWSL 2のUbuntuでdocker run hello-worldを実行すると、もうイメージはpull済であるため即座に実行されます。
また、WSL 2のUbuntuでdocker context lsを実行すると、WSL 2上の1つしか表示されません。

Docker Desktop for WSL 2では従来の仕組みであるDocker DesktopVM上でのDockerデーモンと、WSL 2上のDockerデーモンが別々に動作している事が分かりました。

Hyper-Vマネージャーの表示で、従来からの仕組みであるDocker DesktopVMが設定され起動している事が確認できます。
色々な方が指摘されていますが、WSL 2用の仮想マシンはHyper-Vマネージャーには表示されない模様です。
8.png


まとめ
Docker Desktop for WSL 2の導入のみでWSL 2上のUbuntuでdockerコマンドが使用可能です。
Docker Desktop for WSL 2では従来の仕組みであるDocker DesktopVM上でのDockerデーモンと、WSL 2上のDockerデーモンを同時に動作させる事が可能で、Docker Endpointを切り替える事によってWindowsのコマンドプロンプトなどからは、いずれか1つのDockerデーモンを使用する仕組みになっています。
仕組みの分かりやすい図がdockerブログの冒頭に掲載されています。

またDocker Desktop for WSL 2を導入するだけで、Windowsコマンドプロンプトなどからは(Docker DesktopVMを利用する環境では)dockerコマンドだけではなく、Kubernetes(kubectlコマンドなど)がこれまでと同様に利用可能である事を確認できました。
(設定でEnable Kubernetesにチェックし、複数のPodが起動するような既存YAMLのapplyで確認)
一方WSL 2上のUbuntuではDockerデーモンまでが自動で起動しdockerコマンドが使えますが、Kubernetes環境までは設定されていない模様です。

個人的には今後、WSL 2とDocker Desktopの組み合わせが、コンテナの開発テスト環境としてWindowsの利用を更に促進させるのではないかと考えています。

77
69
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
77
69