WSLでdockerのインストールからdocker-composeまで動かす

# これは何？
私の技術メモです。

docker for windowsのdockerデーモンを使用してWSLでdockerを動かせるようにしました。

# 前提

* **docker for Windowsが動かせる。**
    * WSLでdockerデーモンが立ち上げられないため、docker for windowsのdockerデーモンを使用します。(最近ではそうでもないらしいのですが…)
    * docker for windowsのシステム要件上、必然的にWin10 64bit Proとなります。

* どっちでもいいのですが、Linuxコンテナイメージを使っています。

# やりたいこと

* WSLでLinux(ubuntu)を動かせるようにする。
* ubuntu上でdockerを動かせるようにする。
* ubuntu上でdocker-composeを動かせるようにする。
    * gitlabを試しに起動してみる。

# やってみた

## WSLでLinuxを動かせるようにする

* コントロールパネルよりWSLを導入

![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/145628/5f7846c7-07f7-6f8d-1416-498c8e96dda2.png)

![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/145628/64caff97-5391-f29e-a8d2-9dcf7123f130.png)

* 再起動を要求されるので再起動後、MicrosoftStoreからubuntuを検索して選択
とりあえずubuntuを選択

* インストールが終われば、ubuntuが追加されて選べるようになる
![キャプチャ5.PNG](https://qiita-image-store.s3.amazonaws.com/0/145628/cb646218-d26c-9356-195c-27bd1e7f60f2.png)

* 起動後、installingを数分待って、デフォルトのユーザー名/パスワードを入れれば使えるように！
![キャプチャ6.PNG](https://qiita-image-store.s3.amazonaws.com/0/145628/4e6a960d-f36b-3505-15cb-27bc3ccf7fe4.png)



## プロキシ関連の対応が必要な場合

* とりあえずこのあたりは対応(profile変更後は、sourceコマンド実行する)
    * /etc/profile
    * /etc/apt/apt.conf

* とりあえずaptをアップデート(なんと30分近くかかった…)

```
sudo apt update
sudo apt upgrade
```



## Linuxの上でdockerを動かせるようにする

### docker公式のおすすめ通り、dockerのリポジトリを使ってインストール

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```

```
sudo -E add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
```

add-apt-repositoryはaptみたいな個別プロキシ設定が無さそうので、sudo -Eで強引に行くらしい。

```
sudo apt-get install docker-ce
```

* インストールできたことを確認。

```
docker --version
Docker version 18.09.0, build 4d60db4
```



### docker起動時のエラー

* サービスstartでエラー

```
sudo systemctl start docker
System has not been booted with systemd as init system (PID 1). Can't operate
```

### docker for windowsのdockerデーモンを共用する

![キャプチャ1.PNG](https://qiita-image-store.s3.amazonaws.com/0/145628/7238aa14-c62e-6895-da83-76cce7ce9dc2.png)

その後、ubuntuからもloaclhostのポート2375をDOCKER_HOSTとして設定してあげれば、さもubuntu上にdockerデーモンがいるかのように使用可能に。

```
export DOCKER_HOST=tcp://localhost:2375
```

dockerコマンドが動くようになりました
![キャプチャ.PNG](https://qiita-image-store.s3.amazonaws.com/0/145628/ddf76211-dbbe-ae3d-b358-512b8fe9eb58.png)



## Linuxの上でdocker-composeを動かす

* docker-composeを使えるようにする
  * ```docker-compose```のバージョンが古くなっているので、[Docker公式](https://docs.docker.com/compose/install/)を確認して最新のものを入れることを推奨します。
  * ここでの```1.6.2```のところを変えるだけで良いはずです。
  * <font color="Red">```Permission denied```でうまくいかない場合、```sudo```してから実行する必要があるとのことです。@rapidliner00さん、ありがとうございます！</font>

```
curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
```

* gitlabから`git clone`

```
git clone https://github.com/sameersbn/docker-gitlab
```

* `docker-compose.yml`のここだけ変えました

```
    - GITLAB_ROOT_PASSWORD=
```

* upする

```
docker compose up
```

* `docker-compose.yml`で開けたポートにアクセス

![キャプチャa.PNG](https://qiita-image-store.s3.amazonaws.com/0/145628/96ebcde2-f762-97cb-6294-aa15dbf20025.png)



# 参考にさせていただいたもの(ありがとうございます)

* [Windows Subsystem for Linux + Docker for Windows を使えるようにするまでメモ](https://qiita.com/tettekete/items/086ea3bc8a798cae33f5)

* [dockerとdocker-composeのインストール(Linux編)](https://qiita.com/youtanagai/items/ff67ceff5497a0e0b1af)