Windows10 Insider Preview Build 18917.1 で WSL1 を WSL2 に移行してDockerを動かす

* 以下はWindows10 Insider Preview Build (Fast) 18917.1000の状態で動作確認しています
    * <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193192/1a6d0bc6-0b1b-c9b8-4335-84f3082d9a4a.png" width=200px>
* Microsoft StoreからUbuntu 18.04 LTS をインストールしています
    * <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193192/8a654c7c-2757-8cd1-80a8-d9eee40c373c.png" width=300px>


## Hyper-Vを有効化する

「Windows の機能の有効化または無効化」→
<img width="347" alt="キャプチャ11.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193192/abb36a19-9f44-eae8-5240-1cb99c2c0c01.png">
→再起動

## WSL1からWSL2に切り替える

コマンドプロンプト（管理者）起動→

```
> wsl --list
Windows Subsystem for Linux ディストリビューション:
Debian (既定)
Ubuntu-18.04

> wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
変換が完了しました。
```

## UbuntuでDockerを起動する

### Dockerをインストールする

詳細は https://docs.docker.com/install/linux/docker-ce/ubuntu を参照してください

Ubuntu-18.04→

```
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get install docker-ce
```

### Dockerをsudoなしで起動できるようにする

```
$ sudo gpasswd -a $USER docker
```

※グループにdockerが追加されてなかったらWSLにログインしなおした方がいいかも

```
$ groups
... docker ←これ
```

### Dockerを起動する

```
$ sudo apt-get install docker-ce
$ sudo service docker start
 * Starting Docker: docker                          [ OK ]
$ service docker status
 * Docker is running
```

### HelloWorldする

```
$ docker run --rm hello-world

Hello from Docker!
...
```

## 失敗談

### WSL1のままでいけるか？

→Daemonが起動しない（環境はWSL1 Debian）

※もしかするとホストのWin10にDockerをインストールしているからかも？

```
$ service docker start
grep: /etc/fstab: No such file or directory
[ ok .] Starting Docker: docker.
$ service docker status
[FAIL] Docker is not running ... failed!
```

### コマンドプロンプトをユーザで起動

→WSL2への移行に失敗する

```
>wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
エラーを特定できません。
```

### Hyper-Vを有効化していない

→WSL2への移行に失敗する

```
>wsl --set-version Ubuntu-18.04 2
変換中です。この処理には数分かかることがあります...
WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
仮想マシン プラットフォームの Windows 機能を有効にしてください。
``` 

## 番外編

### docker-compose をインストールする

詳細は https://docs.docker.com/compose/install/ を参照してください

```
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
docker-compose version 1.24.0, build 0aa59064
```

### VS CodeのRemote Developmentを使う

VS Codeを起動→左下の <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193192/23865458-35e7-1430-59ef-7c0fc06a6de4.png" width=32px> マークをクリック→メニューから <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193192/c91d0496-ee80-0976-f258-6913c65f8012.png" height=22px> をクリック