【環境構築】docker1.5をboot2docker上で使いたいときにしたこと

## 環境
* Mac 10.9.5
* homebrew
 * boot2docker
 * docker

### 結論
* こちらを参考にすることで、 `docker1.5` の環境を用意することができた
 *  [[小ネタ]Boot2dockerで実行するDocker VMのバージョンアップ](http://dev.classmethod.jp/tool/versionup-boot2docker-dockervm/)
* boot2docker自体も `boot2docker upgrade` が必要だった
* boot2docker, docker(client), docker(server/vm) が1.5になった。
* 試したかった `docker stats` が試せた

---

## docker1.5が出てた
* [DOCKER 1.5: IPV6 SUPPORT, READ-ONLY CONTAINERS, STATS, “NAMED DOCKERFILES” AND MORE](http://blog.docker.com/2015/02/docker-1-5-ipv6-support-read-only-containers-stats-named-dockerfiles-and-more/)
* やっほーためそう

### brew update
* __既存環境の影響注意で以下__
* `brew upgrade docker boot2docker`
 * boot2docker はこのとき `1.4.1` に。
 * `1.4.1` か。

#### `boot2docker ssh`
* ところが、docker自体は当時使っていたバージョンに
 * `1.3.0` だ？古いな。

```
% boot2docker ssh
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
boot2docker: 1.3.0
```

1.:whale::whale::whale: :-1:

```
docker@boot2docker:~$ docker version
Client version: 1.3.0
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): c78088f
OS/Arch (client): linux/amd64
Server version: 1.3.0
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): c78088f
```

### homebrewでのバージョンはあがっているのに
```sh
% brew upgrade docker boot2docker
Error: docker 1.4.1 already installed
Error: boot2docker 1.4.1 already installed
```

#### `boot2docker restart`
* この時点で、サービス再起動しておきたかった（未確認）

### homebrewとは別管理でバージョンアップが必要そうだ
* 参考サイト：[[小ネタ]Boot2dockerで実行するDocker VMのバージョンアップ](http://dev.classmethod.jp/tool/versionup-boot2docker-dockervm/)
* `delete` なので既存の環境に影響与える可能性がある点は注意

```sh
## dockerのVM削除
% boot2docker delete
## docker vmのダウンロード
% boot2docker download
Latest release for boot2docker/boot2docker is v1.5.0
Downloading boot2docker ISO image...
Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.5.0/boot2docker.iso
        to /Users/xxx/.boot2docker/boot2docker.iso
%
% boot2docker init
% boot2docker up
Waiting for VM and Docker daemon to start...
......................oooooooooooooooooooooo
Started.
Writing /Users/xxx/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/xxx/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/xxx/.boot2docker/certs/boot2docker-vm/key.pem
Your environment variables are already set correctly.
```

#### `boot2docker ssh`
```
% boot2docker ssh
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Docker version 1.5.0, build a8a31ef
```

1.:whale::whale::whale::whale::whale::ok_hand: 

```
docker@boot2docker:~$ docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.4.1
Git commit (client): a8a31ef
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.4.1
Git commit (server): a8a31ef
```

### docker1.5.0を試してみる
* `Stats` の機能を試したい
 * refs: https://github.com/docker/docker/pull/9984
* ところが、 `boot2docker` は1.4.1
 * `boot2docker ssh` してdocker上で操作しないとコマンドがない。

#### docker上にはあるが
```
docker@boot2docker:~$ docker --help | grep stats
    stats     Display a live stream of one or more containers' resource usage statistics
```

#### boot2docker自身もバージョンアップだ
```
% boot2docker upgrade
Backing up existing docker binary...
Downloading new docker client binary...
Success: downloaded https://get.docker.com/builds/Darwin/x86_64/docker-latest
        to /usr/local/bin/docker
        The old version is backed up to ~/.boot2docker.
Backing up existing boot2docker binary...
Downloading new boot2docker client binary...
Success: downloaded https://github.com/boot2docker/boot2docker-cli/releases/download/v1.5.0/boot2docker-v1.5.0-darwin-amd64
        to /usr/local/bin/boot2docker
        The old version is backed up to ~/.boot2docker.
Latest release for boot2docker/boot2docker is v1.5.0
Downloading boot2docker ISO image...
Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.5.0/boot2docker.iso
        to /Users/xxx/.boot2docker/boot2docker.iso
Waiting for VM and Docker daemon to start...
...........oooo
Started.
Writing /Users/xxx/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/xxx/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/xxx/.boot2docker/certs/boot2docker-vm/key.pem
Your environment variables are already set correctly.
```

:ok_hand: 

```
% boot2docker version
Boot2Docker-cli version: v1.5.0
Git commit: ccd9032
```

#### docker statsをboot2docker経由で使えるように
```
% docker stats
docker: "stats" requires a minimum of 1 argument. See 'docker stats --help'.
```

#### VM立ち上げてみて
* 適当に
* [手前味噌](http://qiita.com/ume3_/items/998ed0a70a0cdc293a7e)で動作確認
* `docker pull ume3/docker-ubuntu-monit-log`
 * 適当に走らせる

### docker stats
* 以下の表示得る ... topのような動き（オプションはhelpより、今は、まだなさそう）

```sh
% docker stats $(docker ps -q)

## 表示し続ける

CONTAINER           CPU %               MEM USAGE/LIMIT       MEM %               NET I/O
05050378f39a        0.32%               96.52 MiB/1.961 GiB   4.81%               1.266 KiB/648 B
```