Windows10にDockerをインストール

今日は、Parallelsで作成済みのWindows10仮想マシンにDockerをインストールしたいと思います。
先日の投稿を見て頂いた方はご存知とは思いますが、当初はParallelsでUbuntu仮想マシンを作成し、そこにDockerをインストールして開発環境を構築しようとしておりました。もっと言うと、その環境のDockerへVSCodeの"Remote - Containers"拡張機能で接続してプログラミングする環境を構築したかったのです。

https://qiita.com/829yasubee/items/2eaf1dc517c1f3f7b64b

しかし、１つ勘違いしている事に気づいてしまいました。それは、"Remote-Containers"拡張機能で自分用の開発環境を構築するなら、Windows10またはmacOSにVSCodeとDockerを同居させてスタンドアロン環境にする方が一般的なのではないかという事に。色々調べている際、"Remote - Containers"拡張機能のデフォルトのリモート接続先がlocalhostだという事が分かった時に気づきました。
という事で、Windows10仮想マシン環境で一からやり直したいと思います。随分と遠回りになってしまった。

#**環境周りの情報**
以前の投稿に記載した内容と重複するが、再度おさらいしておきます。

母艦のMacはiMac(Retina 5K, 27-inch, 2019)の一番安い構成のもの。後付けでメモリを16GB×2枚追加して40GBにしてあります。その他の細かいスペックは割愛します。

* ホストOSは、macOS Monterey
* 仮想化環境ソフトは、Parallels Desktop 17 for Mac Pro Edition
* 仮想マシンの構成は、2CPU、8GBメモリ、256GBストレージ（128GBで十分かも）
* ゲストOSは、Windows10 Pro 64bitで、21H1適応済み

:::note warn
Parallels DesktopがPro Editionなのは、Windows10仮想マシンでDocker環境を構築するのに必要な機能がStandard Editionでは利用できなかった為。詳細は後述する。
:::

#**インストール手順**
それではまず、ParallelsでWindows10仮想マシンを起動。
![スクリーンショット1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/e37910b3-3c3a-b2c3-bb5e-bb0cb05d9e74.png)

###**Windowsの機能の有効化**
コントロールパネルを開き、[プログラム]→[プログラムと機能]と開き、[Windowsの機能の有効化または無効化]リンクをクリック。
![スクリーンショット2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/fafc326c-003d-6c8d-67a0-24ad73e7b4c3.png)
[Linux用Windowsサブシステム]と[仮想マシンプラットフォーム]にチェックを付けて[OK]ボタンをクリック。
![スクリーンショット3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/be4ffd33-10fa-e937-a366-44177590a783.png)
「必要な変更が完了しました。」と表示されたら、[今すぐ再起動]ボタンをクリック。
![スクリーンショット4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/af614549-7694-5793-22dd-ffbc2f31f9d9.png)

###**WSL2のアップデート**
再起動が終わったら、WSL2（Windows Subsystem for Linux 2）のアップデートを行う。
まず、下記のURLへアクセスし、アップデートプログラムをダウンロードする。
　[https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi](https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi)

ダウンロードが終わったら、ファイルをダブルクリックし、インストーラーを起動する。
インストーラーが起動したら[Next]ボタンをクリックする。
![スクリーンショット5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/903d3221-dd1e-3013-3c82-80add1b08d01.png)
アップデートが始まる。
アップデートが完了したら[Finish]ボタンをクリックする。
![スクリーンショット6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/5f4b233b-5e46-e045-d593-c91039e289a2.png)

###**Docker Desktop for Windowsのインストール**
いよいよDocker本体のインストールをしていく。
まず、下記のURLへアクセスし、Docker Desktop for Windowsをダウンロードする。
　[https://hub.docker.com/editions/community/docker-ce-desktop-windows/](https://hub.docker.com/editions/community/docker-ce-desktop-windows/)
![スクリーンショット7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/f0a65ced-3873-e404-fc36-be9a26be8c75.png)
ダウンロードが終わったら、ファイルをダブルクリックし、インストーラーを起動する。
Configuration画面が表示されるので、[OK]ボタンをクリックする。
![スクリーンショット8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/96b78d84-3bf6-5633-d233-0de3ed26776a.png)
インストールが開始する。
インストールが完了したら[Close]ボタンをクリックする。
![スクリーンショット9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/59bebd03-eb9b-54a4-6810-9011b7268aa2.png)

###**Docker Desktopの起動確認**
デスクトップに作成されたDocker Desktopアイコンをダブルクリックし、Docker Desktopを起動してみる。
規約について同意を求められるので、同意するとDocker Desktopの画面が起動するが、Docker Engineの起動に失敗してしまう。
![スクリーンショット10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/fe8361d8-ac05-c2cf-c89e-22b8b5c9d96f.png)
このエラーに関して、色々調べてみた結果、ParallelsのWindows10仮想マシンの構成画面より、**ネストされた仮想化を有効にする必要がある**事が判明。しかも、**この機能はParallels DesktopのPro Editionじゃないと使用できない**。仕方ないので、Pro Editionにアップグレード。
これが本投稿の冒頭で述べた「Parallels DesktopをPro Editionにしている」理由。
ネストされた仮想化を有効にするには、Parallels DesktopでWindows10仮想マシンの構成画面を開き、[ハードウェア]→[CPUおよびメモリ]の[詳細]ボタンをクリックし、[ネストされた仮想化を有効にする]にチェックを入れればよい。ハマりポイントなのでご注意を！
![スクリーンショット11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/0b4c9647-b6ad-597e-818b-242163a4cc68.png)
Windows10仮想マシンを起動し、気を取り直して、再度Docker Desktopを起動してみる。
今度は無事起動した。
初回起動ではチュートリアルを見るように促されるが、私はスキップした。見たい人はご自由にどうぞ。
![スクリーンショット12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/821eca6b-4ed7-8994-1c3c-df3b2684f3ca.png)
Dockerの設定を確認してみる。画面上部の[⚙]マークをクリック。
![スクリーンショット13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/0a327e8a-edc7-4195-d88d-9e73d47994c0.png)
下記赤枠項目は確認しておいた方が良いと思う。
![スクリーンショット14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206277/396caa07-420a-3417-e80b-19d122dd590b.png)
項目の意味は以下の通り。

|項目|意味|
|:-|:-|
|Start Docker Desktop when you log in|DockerDesktopのスタートアップに登録するかどうか。これはどちらでも好きなようにどうぞ|
|Use the WSL 2 based engine|DockerをWSL2ベースで使用するかどうか。これは基本的にONにする。昔はHyper-Vベースだったらしいが今はこちらが主流|
|Use Docker Compose V2|バージョン2以降のDocker Composeを使用するかどうか。これは各自の状況に合わせてご自由にどうぞ|

一応、コマンドプロンプトを起動し、dockerコマンドとdocker composeコマンドでも動作確認してみる。

```powershell:実行コマンド
docker version
```

```text:表示される結果
Client:
 Cloud integration: v1.0.22
 Version:           20.10.11
 API version:       1.41
 Go version:        go1.16.10
 Git commit:        dea9396
 Built:             Thu Nov 18 00:42:51 2021
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.11
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.9
  Git commit:       847da18
  Built:            Thu Nov 18 00:35:39 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
```

```powershell:実行コマンド
docker compose version
```

```text:表示される結果
Docker Compose version v2.2.1
```

無事動作した。
お疲れ様でした！