Windows 10 Home で Docker Tool Box から Docker Desktop (with WLS2) に移行した

こんにちは。2020年5月28日よりWindows 10 May 2020 Update (version 2004) が配信開始されましたね。
新機能の中でも、WSL2 により Docker Desktop も Windows 10 Homeでも使えるようになりました。

私の PC 環境は Docker Tool Box + Windows 10 Home だったので
WSL2 を導入し、Windows 10 Home でも Docker Desktop を使えるようにしてみました。

## Windows 10 Version 2004 への更新

[Windows 10 のダウンロード](https://www.microsoft.com/ja-jp/software-download/windows10) にある「今すぐアップデート」より、アップデーターをダウンロード・インストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/03665a73-37b1-e5e1-b52f-651ca9afd295.png)

「設定」-「システム」-「バージョン」から以下のようになっていれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/d9547fa8-2df5-1fd8-6165-6ea3aae6d02b.png)


## WSL2 の設定

### 仮想化の有効化

タスクマネージャーの CPU 欄にて、仮想化が有効になっているか確認します。

<img width="500" alt="task_cpu" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/b37dfff5-d38c-8956-414a-f58a7737fc7a.png">

なっていない場合は、BIOSの設定から、有効化する必要があります。
UEFI/BIOS によって設定方法が異なるため、以下を参考にして仮想化を有効にしてください。

- [Windows 10で仮想化プラットフォーム「Hyper-V」を有効にする：Tech TIPS - ＠IT](https://www.atmarkit.co.jp/ait/articles/1806/25/news026.html)
- [PCでバーチャライゼーション (VT)を作動させるには? – BlueStacks サポート](https://support.bluestacks.com/hc/ja/articles/115003174386-PC%E3%81%A7%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-VT-%E3%82%92%E4%BD%9C%E5%8B%95%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF-)

### WSLの有効化

Power Shell を管理者で起動し、下記コマンドを入力して **OSの再起動** をします。

```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```


### WSL 2 Linux カーネルの更新

[WSL 2 Linux カーネルの更新 | Microsoft Docs](https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel) のリンクを開き、**最新の WSL2 Linux カーネル更新プログラム パッケージをダウンロード**を選択して、インストーラーをダウンロード・インストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/6fbacd2e-3bb4-562d-c029-9feb98e90d8c.png)

### Linuxのディストリビューションをインストール

[こちら](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10#install-your-linux-distribution-of-choice) より、Microsoft Store 経由で Linux のディストリビューションを選択して、インストールします

筆者は、[Ubuntsu-20.04 LTS](https://www.microsoft.com/ja-jp/p/ubuntu-2004-lts/9n6svws3rx71?activetab=pivot:overviewtab) をインストールしました。

### WSL に Linuxのディストリビューションを割り当て

WSL に インストールした Linux のディストリビューションを割り当てます

```powershell
wsl --set-version Ubuntsu-20.04 2
```

## Docker Desktop のインストール

以下より、Docker Desktop インストーラーをダウンロードしてインストールします。
[Docker Desktop for Mac and Windows | Docker](https://www.docker.com/products/docker-desktop)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/2c4302a6-30d7-0067-6154-d5423ef30ca3.png)


インストーラーを進めていき、**Configuration** で **Enable WSL 2 Windows Features に チェックが入っていること** を確認してください（入っていなければ入れてください）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/7f9f17cd-633e-75da-1d7f-172a024a2d74.png)

完了後、タスクバーの Docker Desktop アイコンを右クリックして、**Settings** を選択します

<img width="300" alt="env_variable" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/74aa4722-c128-ef9f-70d0-936fa58b227d.png">

Generals の **Use the WSL 2 based engine** にチェックが入っていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/887287c0-e646-3f79-bdf5-481010975bab.png)

また、Resources の **Enable integration with my default WSL distro** にチェックが入っていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/12f8ec79-4dfd-b1d0-b892-bb9aa6a2ef43.png)

## Docker Toolbox の設定削除

### 環境変数の削除

タスクバーの検索ボックスに system と入力し、コントロールパネルのシステムを開きます

<img width="300" alt="system_search" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/8b5046f1-5adf-7001-eafb-3f4b3b0eef4f.png">


「システムの詳細設定 」 - 「環境変数」と選択して、以下の環境変数を**削除**します。

<img width="500" alt="env_variable" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/399c4b10-1e39-c902-53b3-3d896da3f182.png">


```
DOCKER_TLS_VERIFY
DOCKER_CERT_PATH
DOCKER_HOST
DOCKER_TOOLBOX_INSTALL_PATH
```

これらを削除しないと、Docker Toolboxで設定した環境変数を Docker Desktop でも読み込んでしまうため、イメージを Pull する際に イメージリポジトリに接続できませんでした。

参考：[error during connect Get https://192.168.99.100:2376/v1.38/containers/json · Issue #2596 · docker/for-win](https://github.com/docker/for-win/issues/2596#issuecomment-595771015)

## Docker コンテナの起動確認

コマンドプロンプト または Power shell から、以下をコマンドを入力します

```powershell

docker run -dp 80:80 docker/getting-started
```

タスクバーにある Docker Desktop を右クリックして Dashboard をクリックします。

<img width="300" alt="env_variable" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/ba619483-ffd3-169f-c387-0a9e25ded2c4.png">


下記のように、 `getting-started` イメージでコンテナが起動できていればOKです。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341731/f577313a-dc74-bf42-461e-313e7b49dc15.png)

最後に、Docker Toolbox をアンインストールして、完了です。お疲れさまでした。

## 参考

- [Windows Subsystem for Linux (WSL) を Windows 10 にインストールする | Microsoft Docs](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)
- [docker/for-win: Bug reports for Docker Desktop for Windows](https://github.com/docker/for-win)