Docker環境をEC2でアップして開発環境をつくる


Wordpressを先にやったほうが簡単かもしれない

Dockerでやると何が楽か？
・コマンド１つ実行するだけで、仮想マシンの自動起動と、Dockerデーモンのプロビジョニングを行います。
・複数の環境でもコマンドで管理できる。


## Docker on AWS

Amazon Web Service 上で、docker Machineを作ってみよう。

https://docs.docker.com/machine/drivers/aws/


#### 先に準備しておこう　＞　IAM作成とキーの取得
amazonec2-access-key、amazonec2-secret-key、などを取得します。


## docker-machine

Docker環境が動作するサーバ環境を「docker-machine」コマンドで作成します


EC2上であれば、Docker環境を準備しなくても[docker-machine]コマンドを実行すると、
自動的にDockerが入ったインスタンスを起動してくれます。

```
docker-machine create 
--driver amazonec2 
--amazonec2-access-key AKI******* 
--amazonec2-secret-key 8T93C********* 
--amazonec2-vpc-id vpc-****** aws01
--amazonec2-zone b 
{作成するインスタンス名}
```

なんで、以下のようなコマンドで作成してみます

```
docker-machine create 
--driver amazonec2 
--amazonec2-access-key AXXXXX
--amazonec2-secret-key fXXXXX
--amazonec2-vpc-id vpc-XXXXXXX
--amazonec2-zone b 
docker-bohebohe
```

できたか確認してみる
                                                                                                                                              
```
% docker-machine ls   

NAME              ACTIVE   DRIVER       STATE     URL                       SWARM
default           -        virtualbox   Stopped
docker-bohebohe   -        amazonec2    Running   tcp://54.1XX.XX.XX:2376
```

sshで接続

```
% docker-machine ssh docker-bohebohe                                                                                                                                  [14:18:47]
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-53-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Mon Dec  7 05:16:14 UTC 2015

  System load:  0.54              Processes:              107
  Usage of /:   9.2% of 15.61GB   Users logged in:        0
  Memory usage: 12%               IP address for eth0:    172.31.48.19
  Swap usage:   0%                IP address for docker0: 172.17.0.1

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud


*** System restart required ***
ubuntu@docker-bohebohe:~$
```

ec2に接続するために、sshのキーペアの設定をしなくても接続できるので楽チン。



### 作成したDockerマシンの環境変数の設定を行う

つぎに、docker-composerで、環境を作成するわけですが、どこのdockerに実行するのかわからないですよね。なので、環境変数で設定してあげることが大事です。

env コマンドを実行すると環境変数を export する文が表示される

```
$ docker-machine env docker-bohebohe

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://XXX.XXX.XXX.XXX:2376"
export DOCKER_CERT_PATH="/Users/ashibuya/.docker/machine/machines/docker-2"
export DOCKER_MACHINE_NAME="docker-2"
```

上記を環境変数にセットしない場合は以下のコマンドを実行する

```
Run this command to configure your shell:
eval "$(docker-machine env docker-2)"
```


## docker-compose

docker-composeは複数のコンテナやアプリケーションを構築・管理するためのコマンドラインツールです。

以下の２つのファイルを使って、環境構築ができます。

```
Dockerfile
docker-compose.yml
```


### 複数のクラスタを作成してみよう

さて、上記の作業が終わったら、実際にWordpressの環境を構築してみましょう。

よく例にだされているWordPress環境を構築するためのファイルを作成します。
内容については、こちらの公式サイトで確認してから作成して

Quickstart Guide: Compose and WordPress 
https://docs.docker.com/compose/wordpress/

```
docker-compose up
```

で実行できます。

### コンテナ操作をコマンドラインから実行する

#### プロセス

* バックエンドで起動する

```
docker-compose up -d 


Starting wp_db_1
Starting wp_web_1
```

* コンテナのプロセスを確認する

```
docker ps [16:45:51]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52c6716f135e wp_web "php -S 0.0.0.0:8000 " About an hour ago Up About an hour 0.0.0.0:8000->8000/tcp wp_web_1
8d109d3738dd orchardup/mysql "/usr/local/bin/run" About an hour ago Up About an hour 3306/tcp wp_db_1
OK ~/Docker/wp
```

####  コンテナの中にログインする

```
docker exec -it wp_web_1 /bin/bash
root@52c6716f135e:/# ls
```

#### 内容を削除したい場合
* コンテナをストップさせる
 
```
docker-compose stop [16:53:22]
Stopping wp_web_1 ... done
Stopping wp_db_1 ... done
OK ~/Docker/wp
```

* 対象となるコンテナを削除する

すべて消す場合

```
docker-compose rm
```


単体で消す場合

```
docker rm wp_web_1 [16:53:43]
wp_web_1
OK ~/Docker/wp
```

* 対象となるイメージも削除する

```
docker images [16:54:14]

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
wp_web latest e1c39e6fc952 About an hour ago 349.7 MB
orchardup/mysql latest ab3b99429ab1 15 months ago 292.4 MB
<none> <none> baa319719d3f 16 months ago 103.9 MB
orchardup/php5 latest c385b8a81cee 17 months ago 330.1 MB
```

```
docker rmi wp_web [16:54:23]

Untagged: wp_web:latest
Deleted: e1c39e6fc95256e962cb724a16130d4a9c1319a550a4a434dae4bd50fb2a92b4
```

```
docker images [16:54:52]

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
orchardup/mysql latest ab3b99429ab1 15 months ago 292.4 MB
<none> <none> baa319719d3f 16 months ago 103.9 MB
orchardup/php5 latest c385b8a81cee 17 months ago 330.1 MB
```

* もう一度起動する

```
docker-compose up -d 
Starting wp_db_1
Building web
Step 1 : FROM orchardup/php5
---> c385b8a81cee
Step 2 : ADD . /code
---> ed228b1c2274
Removing intermediate container 4a181521b732
Successfully built ed228b1c2274
Creating wp_web_1
```

#### ログを確認する

```
docker-compose logs
```

各コンテナのログを確認したい場合

```
docker XXXXX logs
```

#### どうしてもdockerのイメージが消えてくれない場合

```
docker ps -a -q | xargs docker rm
```

で、再度、docker images

で表示されてきたイメージを消す

```
docker rmi <ID>
```


きれいになくなりました。