windows 10 home で docker を導入するメモ

# 注意

2020年末にWindows Version 20H1 (2004)がリリースされました。Windows10 HomeもWSL2というLinuxを動かすことができるようになり、Windows 10 Proと同様のDockerが導入できるようになりました。

詳細は、下記、リンクをご参照ください。

https://qiita.com/KoKeCross/items/a6365af2594a102a817b


# 目標

Windows10 HomeにDockerを導入するために必要な手順と最低限の知識をまとめようと思う。
あと、2018/06/16(日)にWindows10 Homeに Dockerを導入した手順となる。

# 対象者（ここ重要）

Windows10 **Home**の利用者に限ります。しかも64bitしかダメです。
Windows10 Professional、Windows Serverの人は対象にしません。

理由は、Windows10 Pro、Serverは、Windows自身が備える仮想環境（Hyper-V）を使ってDockerが動くためです。しかし、Homeは、Hyper-Vが使えないです。

Windows10 Pro/Serverの利用者で、Dockerを導入したい方は、「[windows10 pro docker](https://www.google.co.jp/search?q=windows10+pro+docker&oq=windows10+pro+docker&aqs=chrome..69i57j69i59j69i61j69i60.329j0j1&sourceid=chrome&ie=UTF-8)」のGoogle検索で上位にでてくるので参照されるとよいのではないでしょうか？

- [Docker for WindowsをWindows10 Proにインストール](https://qiita.com/anikundesu/items/7ecf20b7e8a60f8439a8)
- [俺のDocker - Windows10にインストール](https://qiita.com/Ogaaaan/items/99fe54f052ca450889f7)

# Docker Toolboxの導入

Hyper-Vが動かない**Home**では、Hyper-Vの代わりに**Oracle Virtual Box**を利用する、
[Docker Toolbox](https://docs.docker.com/toolbox/overview/)を利用します。

## ダウンロード

https://docs.docker.com/toolbox/overview/ を開きます。

**レガシー！？** と書いてありますが、気持ち負けたらダメです。
機能的には最新の「Docker for windows」と変わりませんし、
逆に、不具合がなく安定している製品と考えた方がよいです。

![2018-06-16_13h26_03.png](https://qiita-image-store.s3.amazonaws.com/0/133291/3cee8999-25af-f405-f9b0-60c522c3a34f.png)

気持ち折れずに、ページをするする下の方に行くと、ダウンロードリンクがでてきますのでゲットします。
VirtualBoxも含まれていますので、サイズが211MBと大きいです。気長に待ちます。

![2018-06-16_13h30_38.png](https://qiita-image-store.s3.amazonaws.com/0/133291/b1abb006-11d7-20e1-ef50-e53fb56d8596.png)

## インストール

ダウンロードが完了すると、このようなアイコンのファイルができますので、ダブルクリックしてインストールを進めます。
![2018-06-16_13h35_08.png](https://qiita-image-store.s3.amazonaws.com/0/133291/b6999cff-cd2b-6d2d-b6e6-373ba241121d.png)

インストールが完了すると、デスクトップ上に以下の3つのアイコンが作成されます。

![2018-06-16_13h36_46.png](https://qiita-image-store.s3.amazonaws.com/0/133291/cb663bf2-1714-dfed-d8ca-979385a037d4.png)

# 初期設定

さきほどの3つのアイコンの「Docker Quickstart Terminal」を起動します。

ターミナルが開いて、初期設定が始まります。
Dockerのクジラマークが表示されたら完了です。
![2018-06-16_13h51_22.png](https://qiita-image-store.s3.amazonaws.com/0/133291/bae39a1e-5154-4ac8-f233-deffab04ff3c.png)

# 動作確認

さきほどのターミナル上で、以下のようにコマンドを打ちます。

```bash
docker run hello-world
```

以下の画像が表示されれば完了です。
![2018-06-16_13h53_23.png](https://qiita-image-store.s3.amazonaws.com/0/133291/faf90822-4f21-536e-1a94-fedcf1eca2f7.png)

# 実際の使い方

この後は、「Lamp」環境を作ったり、「Node.js」の環境を作ったりするためのベースができました。

こちらは割愛します。

# ファイル共有の仕方 と 構成の再確認

Dockerコンテナとのファイル共有をしたい場合に、現在の構成を知っておく方がよいので書いておく。

## 構成

構築されているDocker環境は、以下の図のような構成となっている。
![2018-06-16_14h12_25.png](https://qiita-image-store.s3.amazonaws.com/0/133291/741ae238-cb87-3950-f983-02e0e1486283.png)

たぶん、この図でわかると思いますが、簡単に説明していきます。

- 一番下の「Windows10 Home(64)」が、普段使っているPCにインストールされているOSになります。
- 下から2番目の「Oracle Virtual Box」が仮想環境を提供します。
	- デスクトップに作成された「Oracle VM Virtuabox」というアイコンをクリックすると画面が表示されますが、通常はバックグラウンドで動作をするので目に触れることはありません。
- 「仮想マシン(default)」がDockerの環境を提供するLinuxマシンになります。
- 一番上が「Dockerコンテナ」となります。

「Docker Quickstart Terminal」を起動すると、「Oracle VirtualBox」と「仮想マシン(default)」が順に起動します。

## ファイル共有

Dockerが提供するファイル共有というのは、DockerコンテナとホストOS(ここでは仮想マシン(default)になります。

実際にWindows10 上のファイルを共有する場合は、VirtualBoxの機能を使って仮想マシン(default)に提供する必要があるのです。

3階層もあるので少し重たい感じがしますね。

このあたりは、以下記事が参考になります。

- [Docker toolbox on windows マウント：Dockerコンテナの中でホストのフォルダを見たい](https://qiita.com/hnishi/items/db10505e36c95587851d)

# 停止する

「Docker Quickstart Terminal」を実行すると、Oracle VM　と その上のLinuxが動作します。
「Docker Quickstart Terminal」をExitしただけでは、これからはバックグラウンドで動作をし続けます。
これはちょっと嫌だなぁということで、停止の仕方を記載しておきます。
※自分でも久しぶりに動かすと忘れてしまっていた。。。

## 動いているコンテナがないか確認する

以下は、すべてのコンテナが停止状態なので止められる状態です。

```console
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
```

こちらは、「dc993ecd29ba」が動作している状態です。

```console
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
dc993ecd29ba        ubuntu              "bash"              16 seconds ago      Up 15 seconds                           friendly_haibt
```

動いているコンテナがあれば止めます。

```console
$ docker stop dc993ecd29ba
dc993ecd29ba
```

## 仮想マシンを止める。

### 仮想マシンの状態確認

こんな感じで、「default」という名称の仮想マシンが動作しています。
その上で停止コマンドを実行します。

```console
$ docker-machine.exe ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER        ERRORS
default   *        virtualbox   Running   tcp://192.168.99.100:2376           v18.05.0-ce

$ docker-machine.exe stop
Stopping "default"...
Machine "default" was stopped.
```

これでOKです。