Windows 10 HomeでDocker Toolboxを使ってDockerを動かした

# 概要
Windows 10 HomeでDockerを動かしました。
折角だから取り敢えず簡単にベンチマークしました。

# Dockerを使えるようにする
今のところDocker For WindowsはWindows 10 Homeでは使えないようです。
[Windows10 HomeでDocker環境構築](https://ts0818.hatenablog.com/entry/2017/04/15/163222)を参考にDocker Toolboxを使ってDockerをWindows 10 Homeで使えるようにします。

Docker Toolboxのインストールをします。

* https://docs.docker.com/toolbox/toolbox_install_windows/ から「Get Docker Toolbox for Windows」ボタンをクリックしてDocker Toolboxをダウンロード
* ダウンロードしたファイルを起動してDocker Toolboxをインストール

PowerShellからDockerマシンを立ち上げてDockerを使えるようにします。

```sh:
> docker-machine create default
> docker-machine start
> & "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression
```

# コンテナを作って起動
## 必要なファイルを作る
```:ファイル構成
- Dockerfile
- benchmark.py
```

```Dockerfile:Dockerfile
FROM alpine:3.7

RUN apk --update add python3
RUN pip3 install --upgrade Benchmarker

ADD . /app
WORKDIR /app

CMD python3 benchmark.py
```

```python:benchmark.py
from benchmarker import Benchmarker

with Benchmarker() as bench:
    @bench("add")
    def _(bench):
        count = 0
        for i in range(1000000):
            count += i

    @bench("append")
    def _(bench):
        l = []
        for i in range(1000000):
            l.append(i)

```

## コンテナのビルドと実行
ビルド

```sh:
> docker build -t dockertoolbox-benchmark .
```

実行

```sh:
> docker run --rm -v /c/Users/{ユーザ名}/Documents/docker_test:/app -it dockertoolbox-benchmark
```

補足：Windowsで-vオプションを使って、例えば `C:\Users\{ユーザ名}\Documents\docker_test` というパスをマウントしたい場合は `/c/Users/{ユーザ名}/Documents/docker_test` といったフォーマットで書く必要があるみたいです。

# 実行結果
Docker Toolboxを使った場合

```sh:
> docker run --rm -v /c/Users/{ユーザ名}/Documents/docker_test:/app -it dockertoolbox-benchmark
## benchmarker:         release 4.0.1 (for python)
## python version:      3.6.3
## python compiler:     GCC 6.4.0
## python platform:     Linux-4.9.93-boot2docker-x86_64-with
## python executable:   /usr/bin/python3
## cpu model:           Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz  # 3191.994 MHz
## parameters:          loop=1, cycle=1, extra=0

##                                       real    (total    = user    + sys)
add                                    0.2211    0.2200    0.2200    0.0000
append                                 0.2971    0.3000    0.2900    0.0100

## Ranking                               real
add                                    0.2211  (100.0) ********************
append                                 0.2971  ( 74.4) ***************

## Matrix                                real    [01]    [02]
[01] add                               0.2211   100.0   134.4
[02] append                            0.2971    74.4   100.0
```


Dockerを使わずWindowsで実行した場合

```sh:
> python .\test.py
## benchmarker:         release 4.0.1 (for python)
## python version:      3.6.4
## python compiler:     MSC v.1900 64 bit (AMD64)
## python platform:     Windows-10-10.0.17134-SP0
## python executable:   C:\Users\{ユーザ名}\Anaconda3\python.exe
## cpu model:           Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
## parameters:          loop=1, cycle=1, extra=0

##                                       real    (total    = user    + sys)
add                                    0.0596    0.0625    0.0625    0.0000
append                                 0.0859    0.0781    0.0625    0.0156

## Ranking                               real
add                                    0.0596  (100.0) ********************
append                                 0.0859  ( 69.3) **************

## Matrix                                real    [01]    [02]
[01] add                               0.0596   100.0   144.2
[02] append                            0.0859    69.3   100.0
```

Docker Toolboxを使った場合はそれなりに遅くなる。

# TODO
いちいちディレクトリ名を指定せずにマウントをできるようにしたい。
`PWD`を使ってやってみたがエラーになる。

```sh:
> docker run --rm -v ${PWD}:/app -it dockertoolbox-benchmark
C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: invalid mode: /app.
See 'C:\Program Files\Docker Toolbox\docker.exe run --help'.
```