Windows10 Home Edition でDockerが使用可能に

##はじめに
2020/3月末 Windows 10 HomeでWSL2が使用できることになり、Docker desktopに対応することが出来るようになりました。また、WSL2によるDockerの使用は、[Hyper-Vを用いた方法よりも15倍速い速度](https://www.docker.com/blog/new-docker-desktop-wsl2-backend/)となるため、より軽い処理で実現できます。ただし、OSを開発者verで入れないといけないこと、Dockerも現状edgeという正式版での対応はまだであることから、多少のリスクを伴うため、ユーザーが安心して導入するのはまだしばらく時間がかかりそうです。（2020/4/7時点）
今回は開発版でDockerを入れてみた場合の操作を記載します。

##この記事を読んでもらいたい方
Windows ユーザーでDockerをこれから使いたいエンジニア
もう既にDockerをVMWare等で使用しているエンジニア
Windows 10 pro もしくはEnterprise しか対応してなかったので、Dockerを使えなかったと思っているエンジニア

##注意事項
上記でもアナウンスしましたが、これからWindowsに開発版のOSを入れていきます。
製品版に近いものの、万一OSに問題があった場合、再度OSを入れなおします。その際のフォーマット化に伴い内部ストレージのデータが消えることが予想されます。
必要なデータは外付けHDD or クラウド上に保存するようにして、十分ご理解の上実行してください。

##作業時間
約半日

##概要
1.WindowsOSのversion確認
2.Windows Insider Program(slowRing）にする
3.WSL と Virtual Machine Platform の有効化
4.Linux ディストリビューションの取得および開発者
5.WSL2のデフォルト化とUbuntu<=>WSL2間の接続
6.VScode<=>Ubuntu間の接続
7.Docker Desktopのinstall
8.Dockerの接続を確認

##手順
###1.WindowsOSのversion確認
WindowsOSが10 かつ  ver18917以上であることをコマンドプロンプトから、verコマンドで確認しましょう。

![Windows_ver.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/43c34df3-2ebf-c9cc-e7d6-a1283c5ce70f.jpeg)
[versionが低い場合](https://support.microsoft.com/ja-jp/help/4027667/windows-10-update)は更新→再起動してください。

###2.Windows Insider Program(slowRing）にする
Microsoftアカウントの登録→ログインから、[Insider Programに登録](https://insider.windows.com/ja-jp/)してください。
[slowRing とfastRingの違いについて](https://ascii.jp/elem/000/001/099/1099995/)
登録されると以下のガイダンスがでますので、手順に従ってインストールします。
![registrated_insider_preview.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/278c7f73-e83c-83eb-8a9a-b7468fec16d7.jpeg)

↓[スタート] -[設定] - [更新とセキュリティ]に入って、Insider Programへ
![[スタート] -[設定] - [更新とセキュリティ] -Windows Insider Program.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/f7ef82fc-29b2-b7c9-f3aa-9295539d6bf9.jpeg)
↓[開始]を押してアカウントをリンクさせます
![account_Link.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/9f826d4d-aa2c-1417-e3a6-3df930f387ae.jpeg)
↓Insiderはスローを選択しましょう
![account_Link3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/affb92a3-de2b-a398-eff1-10ac1a20ad09.jpeg)

###3.WSL と Virtual Machine Platform の有効化
管理者権限でPowerShellを立ち上げ、下記コマンドを実行

```
#WSLの有効化
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
#Virtual Machine Platformの有効化
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```

一度再起動します。（先ほど実行したInsider Program slow.verも有効化します）

その後、WSL2カーネルの更新を行います。
[こちら](https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel)参考にダウンロード→update→再起動するだけ
※ARM64=x64です
※自分のPCがx64かどうかの確認は、「設定」→「システム」→「バージョン情報」で確認できます。
※[今後Microsoftはこのような手動でのUpdateはやめ、定常的なWindowsのUpdateにこの操作を内部に組み込むとのことです。](https://news.mynavi.jp/article/20200316-997109/)

###4.Linux ディストリビューションの取得および初期設定
Windows　MicrosoftstoreからUbuntuをinstall
私はUbuntu-18.04をinstallしました。
Ubuntuの初期設定は[こちら](https://qiita.com/Aruneko/items/c79810b0b015bebf30bb#)が参考になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/a135d313-4fba-e821-4027-5af38db974f9.png)

###5.WSL2のデフォルト化とUbuntu<=>WSL2間の接続

```
#Ubuntu<=>WSL2間の接続
PS C:>wsl --set-version Ubuntu-18.04 2
#WSL2のデフォルト化
PS C:>wsl --set-default-version 2
```
↓こんな感じになります。
![WSL2_upgrade_success.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/66daa844-b1a3-f560-81e9-840307721d23.jpeg)

接続を確認しましょう。

```PowerShell
#Ubuntuに接続
PS C:>wsl
#Logoutの確認
PS C:>exit
```

Ubuntu初期設定後、WSL2環境のUbuntuを操作している状態でファイルを共有します(つまり、LocalのファイルをLinuxコマンドで動作させれるように同期します）
Ubuntuを開き、↓を実行します。
ちなみに実行後、フォルダが開くので、ショートカットを作成しておくと、Localからファイルを触れるようになりますよ。

```
explorer.exe .
```
###6.VScode<=>Ubuntu間の接続
VScodeの画面左下「＞＜」こんなのをクリック。「Remote-WSL: New Window」を選択してやると、デフォルトに設定しているUbuntuに接続されます。画像の右のようになればOKです。
![VS-code.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/6e7795ec-6e5e-d51a-e683-5df80f6097ce.jpeg)

###7.Docker Desktopのinstall
やっとDockerに入ってきました。あと少しです。
[Docker Desktop for Windows](https://hub.docker.com/editions/community/docker-ce-desktop-windows)をinstallしましょう。こちらのEdgeをinstallします。（stableは試しましたが、まだ対応できてませんでした。今後に期待！）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/9571cb3d-c055-08ed-e0f5-5da5f6a67c9a.png)

※Docker Desktop のtutorialの注意点とインテグレーション
最初の接続先はPowerShellになってるかと思います。
その場合はwslでUbuntuに切り替えて、Dockerのコマンドを流し込んでいきましょう。
↓tutorialが終わったところから始めます。
defaultの接続先（Resources)をUbuntuにしときましょう。（インテグレーション）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/c21c1cd6-0e9e-dd8a-a24b-c8f549b431f8.png)

###8.Dockerの接続を確認
tutorialが終われば、PCの立ち上げと同時に自動で立ち上がるようになります。

Ubuntuを起動し、↓下記コマンドを実行。

```
#nginxを立ち上げます
docker run -p 80:80 nginx
#終了を確認（接続状況を確認）
docker ps
#もし、終了していないdockerがあればこれで接続を切ります
docker kill [CONTAINER ID]
```
[localhost](http://localhost/)に接続を確認します。→Ctrl + C で終了
↓これがでたらOKです。
![welcome_to_enginx.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/614984/55d55c22-a120-8942-24a4-ef68abbca3ed.jpeg)

お疲れ様でした。

#参考にしたサイト
「WSL 2」は「Windows 10 Home」でも利用可能 ～MicrosoftがFAQを掲載(ニュース記事）
https://forest.watch.impress.co.jp/docs/news/1184353.html
「WSL2とHyper-Vの速度比較について」
https://www.docker.com/blog/new-docker-desktop-wsl2-backend/
「Installation Instructions for WSL 2」
https://docs.microsoft.com/en-us/windows/wsl/wsl2-install
「WSL2入れてみた」
https://qiita.com/TsuyoshiUshio@github/items/947301bd9317610572fc
「windows10のversion.update」
https://support.microsoft.com/ja-jp/help/4027667/windows-10-update
「WindowsカーネルのUpdate方法」
https://japan.zdnet.com/article/35150847/
「Microsoftのカーネル管理方法の意向」
https://news.mynavi.jp/article/20200316-997109/
「Windows Insider ProgramのFast slowの違い」
https://ascii.jp/elem/000/001/099/1099995/
「Windows Insider preview」
https://insider.windows.com/ja-jp/how-to-pc/
「Windows Subsystem for Linuxディストリビューションのインストール」
https://qiita.com/Aruneko/items/c79810b0b015bebf30bb#
「UbuntuとLocalディレクトリとの同期（/home/user/でexplorer.exe .）」
https://note.com/akazawa_studio/n/nda7b97038e5c
「Dockerのinstall(edge版をinstallすること。homeは現在2020/4で開発verしか対応できていない）」
https://hub.docker.com/editions/community/docker-ce-desktop-window
「Docker tutorial」
https://qiita.com/wMETAw/items/8d1b0c053a39841765bf