【Docker】UbuntuからDocker Desktopへの疎通方法

こんにちは。
WSL2環境を導入したPCの中で、UbuntuからDocker Desktop(for Windows)に接続する機会があり、その設定方法の覚書ブログとなります。

なお、こちらのブログのように、Docker Desktopの有料化に伴い、Desktopを使用せずにUbuntuにDockerをそのままインストールする方法もあります。
が、今回は、個人利用のため有料化要件(1000万ドル以上または従業員250人以上)に引っかからないところから、Docker Desktopを使用した方法を試行しています。

Ubuntu(WSL2)からDockerを疎通する

1. Docker Desktopをインストール

Docker Desktop for Windowsのインストーラーをこちらからインストールします。
インストーラーを起動し、Docker Desktopをインストールします。(設定値は一旦デフォルトのままでOK)

2. Ubuntuディストリビューションを使用する設定

Docker Desktop画面にて、Settingsを開きます。

Docker Desktop-Settings

General項目にて、「Use the WSL 2 based engine (Windows Home can only run the WSL 2 backend)」をオンにします。
※WSL2環境を構築している場合は、こちらの項目はオン済みとなっているはず

また、後述するが、PC立ち上げ時にDocker Desktopを起動したい場合は、「Start Docker Desktop when you sign in to your computer」をオンにする。

Docker Desktop-Settings-General

WSL Integration項目にて、「Enable integration with my default WSL disto」および「Ubuntu」をオンにする。
これにより、UbuntuからDocker Desktopに接続することが出来ます。 Docker Desktop-Settings-WSLIntegration

疎通が取れているかのテスト

正常に疎通が取れている場合、「docker version」を実行すると、下記のように設定情報が返ってきます。

$ docker version
Client:
 Version:           xx.x.x
 API version:       x.xx
 Go version:        gox.xx.x
 Git commit:        ********
 Built:             ************
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Desktop x.x.x ()
 Engine:
  Version:          xx.x.x
  API version:      x.xx (minimum version x.xx)
  Go version:       gox.xx.x
  Git commit:       ********
  Built:            ************
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          x.x.xx
  GitCommit:        ************************************
 runc:
  Version:          x.x.x
  GitCommit:        ****************
 docker-init:
  Version:          x.xx.x
  GitCommit:        ********

疎通が取れない場合

疎通が取れない場合、「docker version」を実行後、下記のようなアラートが返ってきます。
wsl2ディストリビューションが見つからないので、WSL Integrationで疎通を取ってほしいという旨です。

$ 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.

For details about using Docker Desktop with WSL 2, visit:

https://docs.docker.com/go/wsl2/

その場合、前項手順2の設定に問題があるケースが多いです。

・ Ubuntuディストリビューションを使用する設定が出来ていない
WSL Integration設定を確認する。

・ Ubuntuが起動しているが、それに合わせてDocker Desktopが起動していない
General設定でPC起動時にDockerが起動するように設定する。

※(それでも解決しない場合は、)WSL Integration設定を一旦オフ→再びオンにする。

これらを行い、筆者環境のDocker DesktopとUbuntuの間では疎通が取れました。

おわりに

WSL2を導入した環境にて、Docker Desktop(for Windows)とUbuntuの疎通を取りました。

気になる改善箇所としては、Docker Desktopの起動タイミングです。
現在Docker Desktopの立ち上げタイミングをPC起動時としていますが、Ubuntu立ち上がり時に起動する方がリソース消費も少なく良いと思います。
(筆者が知見不足なだけかもですが、)Docker Desktopの設定値や「Systemctl」といった手段で、何かしらで実現可能だと思っています。

それでは。