windows7へのDockerとlodgeのインストール方法

# Dockerログ

[Docker公式ホームページ](https://www.docker.com)
[https://www.docker.com](https://www.docker.com)


## 作成日
2016年12月5日

## 環境
 - Windows 7 Professional 64-bit
 - Docker toolbox version 1.12.3, build 6b644ec
 - docker-compose version 1.8.1, build 004ddae
 - docker-machine.exe version 0.8.2, build e18a919

```bash
$ docker version
Client:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 23:26:11 2016
 OS/Arch:      windows/amd64

Server:
 Version:      1.12.3
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   6b644ec
 Built:        Wed Oct 26 23:26:11 2016
 OS/Arch:      linux/amd64
```


## Dockerのインストール
[公式Docker toolboxインストールガイド](https://docs.docker.com/toolbox/toolbox_install_windows/)

 - [https://www.docker.com/products/docker-toolbox](https://www.docker.com/products/docker-toolbox)
からDocker toolboxのインストーラ（DockerToolbox-1.12.3.exe）をダウンロードする。

#### メモ
最新のDocker for windowsは、Windows 10 ProfessionalまたはEnterprise 64-bitのみ利用可能。

 - インストーラを実行する。
 - デフォルトの設定ではデスクトップ上に、Docker QuickStart shellとKitematicのショートカットが作成される。

## lodgeのインストール
 - Docker QuickStart shellを起動する。
 - githubから、以下のレポジトリをクローンする。

```bash
$ git clone https://github.com/j138/lodge-docker
$ cd lodge-docker
```

 - lodge-dockerディレクトリ内にあるdocker-compose.ymlを編集してメール設定を行う。
（デフォルトのままでも問題ない。）

#### メモ

ここで、`$ docker-compose build` すると、   

```bash
$ docker-compose build
[31mERROR[0m: The Compose file '.\docker-compose.yml' is invalid because:
rails.environment.SMTP_ENABLE_STARTTLS_AUTO contains true, which is an invalid
type, it should be a string, number, or a null
```

というエラーが出てしまう。
そこで、docker-compose.ymlを以下のように書き換えるとbuildが通るようになる。

```bash
$ diff  docker-compose.yml_org docker-compose.yml
43c43
<     SMTP_ENABLE_STARTTLS_AUTO: true
---
>     SMTP_ENABLE_STARTTLS_AUTO: 1 #true
```

#### メモ
 nginxのポートは80、railsのポートは3000でバインドしてあるので、他のものと重複する場合は適宜書き換える。

 - 以下のコマンドを順に打つ（Railsサーバを立ち上げる）。

```bash
$ docker-compose build
$ docker-compose up -d
$ docker-compose run -d rails rake db:create
$ docker-compose run -d rails rake db:migrate
```

#### メモ
`docker-compose run -d`のデタッチオプション（-d）はMac版とLinux版では不要。


 - ブラウザでlodgeへアクセスできるか確認する。   
アクセスは、通常は http://localhost:80 または http://localhost:3000 でできるが、
Docker toolboxはVirtualboxの中でDockerが動いているので、まずVirtualboxのDockerのIPアドレスを調べる。
調べ方は、   
`$ docker-machine ip`   
例えば、IPアドレスが192.168.99.100だった場合、 http://192.168.99.100:80 でlodgeへアクセスできる。

 - lodgeへログインするためのアカウントを作成する。   
MacやLinuxだと、   

```bash
$ docker-compose run rails rails console
> User.create(email: 'user01@example.com', name: 'Kiske', password: 'password', confirmed_at: Time.now)
```

で作成できるが、Windows版だと   

```bash
$ docker-compose run rails rails console
[31mERROR[0m: Interactive mode is not yet supported on Windows.
Please pass the -d flag when using `docker-compose run`.
```

というエラーが出て、rails consoleを開くことができない。   
そこで、`$ docker ps ` でrailsのコンテナIDを調べて   

```bash
$ docker exec -it railsのコンテナID /bin/sh
```

でシェルに入って、rails consoleの起動と、ユーザー作成のコマンドを打つ。exitでrails consoleとシェルを抜ける

```sh
$ rails console
> User.create(email: 'user01@example.com', name: 'Kiske', password: 'password', confirmed_at: Time.now)
> exit
$ exit
```


 - ブラウザから、email: 'user01@example.com'、password: 'password'でログインできることを確認する。


#### 参考
[Qiita: qiitaのクローンLodgeをdocker compose対応したよー](http://qiita.com/Jey/items/305238765eb5c7cd7810)
[Qiita: (古い情報)Lodgeのイメージ作った](http://qiita.com/tukiyo3/items/58d3599d848fc55eb604)


## Dockerコマンド


 - 所持しているイメージの確認
`$ docker images`
-q: IDのみ表示

 - 所持しているコンテナの確認
`$ docker ps`
-q: IDのみ表示
-a: Exitしたものを含む全てのコンテナを表示

 - イメージの削除
`$ docker rm イメージIDまたはイメージ名:タグ`
-f: force（強制的に削除）

 - コンテナの削除
`$ docker rm コンテナIDまたはコンテナ名`
Exitしたコンテナを全て削除
```$ docker rm `docker ps -q --filter="status=exited"` ```
別の方法
`$ docker ps -a |grep "Exited"|awk '{print $1}'|xargs -I@ docker rm @ `

 - Dockerのレポジトリの検索
`$ docker search hoge`

 - Virtualbox内boot2dockerへsshログインする
`$ docker-machine ssh default`

 - boot2dockerのIPアドレスを調べる
`$ docker-machine ip`

 - Dockerマシンのリストを表示
` $ docker-machine ls`