JAWSUG コンテナ支部: Dockerハンズオン #2


　
[JAWS-UGコンテナ支部 Docker入門 #2](http://jawsug-container.connpass.com/event/20924/) のハンズオン資料です。
（当日のスライドは[こちら](http://www.slideshare.net/ryonakamaru/jawsug-docker-20)）

# 1. 準備

## 1.1. CloudFormationを実行します

1.1. EC2コンソール東京リージョンにログイン
ハンズオンで使えるキーペアがあるか確認。
なければ作りましょう！
https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#KeyPairs:sort=keyName

1.2. 以下リンクから、CloudFormation実行
https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/new?stackName=JAWSUG-Container-Try-Docker&templateURL=https:%2F%2Fjawsug-container.s3.amazonaws.com%2Fcfn-templates%2F02.template

1.3. Docker ToolBoxのダウンロード
https://www.docker.com/docker-toolbox

1.4. Docker Quickstart Terminalを起動します

1.5. 以下のコマンドを実行してみましょう
（dockerのAPIバージョンは1.20のはず）

```Bash:コマンド
docker version
```

1.6. EC2インスタンス一覧から起動した EC2インスタンスを探し
Public IPアドレスをコピー（Ctrl+C）します。
https://ap-northeast-1.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1#Instances:sort=Name

1.7. Docker APIへの接続
以下の「ec2.public.ip.address」を、コピーしたIPアドレスに置き換えながら

(1) 「サーバの中で直接 Dockerを操作」したい方
　下記コマンドを自分用に編集して、
　起動したEC2インスタンスに SSH接続しましょう！
　　* pemの権限やパスを間違えるとつながりませんよ〜
　　* ユーザ名は ec2-userではなく、coreです！
　　* Windowsの方は TeraTermなどから接続してください

```Bash:コマンド
ssh -i your-keypair.pem core@ec2.public.ip.address
```

(2)「Docker Quickstart Terminalから Remote API経由で操作」したい方
　必要な環境変数をセットしましょう！

```Bash:コマンド
export DOCKER_HOST=tcp://ec2.public.ip.address:2375
export DOCKER_TLS_VERIFY=
export DOCKER_CERT_PATH=
```

# 2. docker images, ps（イメージ、コンテナの一覧取得）

```Bash:コマンド
docker images
docker ps
```

# 3. docker run（コンテナの起動）

```Bash:コマンド
docker run java:8 java -version
docker run java:7 java -version
```

# 4. docker run -d（デーモンコンテナの起動）

```Bash:3秒おきにHello-world
docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 3; done"
```

```Bash:MariaDBの起動
docker run -d -e MYSQL_ROOT_PASSWORD=p4ssw0rd -p 3306:3306 mariadb:10
```

# 5. docker logs（コンテナのログを確認する）

```Bash:コマンド
docker logs monit
```

# 6. docker start, stop, restart（コンテナの開始・停止）

```Bash:monitコンテナの停止
docker stop monit
docker ps -a
```

```Bash:monitコンテナの再開
docker start monit
docker restart monit
docker ps -a
```

# 7. docker commit, history（イメージの作成）

```Bash:コンテナに入ります
docker run -it ubuntu:14.04 /bin/bash
```

```Bash:コンテナの中にファイルを作ります
ls /tmp
echo 'hello, world!' > /tmp/hello.txt
exit
```

```Bash:新しいイメージを作ります
docker commit $(docker ps -lq) handson
```

# 8. MySQLを複数立ち上げて繋いでみる

```Bash:お掃除
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
```

```Bash:MySQLの2バージョン同時起動
docker run -d --name mysql56 -e MYSQL_ROOT_PASSWORD=pw mysql:5.6
docker run -d --name mysql57 -e MYSQL_ROOT_PASSWORD=pw mysql:5.7
```

```Bash:MySQL5.7の起動確認
docker logs -f mysql57
（その後 Ctrl+Cで切断）
```

```Bash:MySQL5.6への接続
docker run -it --rm --link mysql56:mysql mysql:5.6 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
（その後 Ctrl+Dで切断）
```

```Bash:MySQL5.7への接続
docker run -it --rm --link mysql57:mysql mysql:5.7 sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
（その後 Ctrl+Dで切断）
```

# 9. 後片付け

9.1. CloudFormationコンソールを開きます
https://console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks

9.2. 今回ハンズオンで使ったスタックを選択し「Delete Stack」しましょう

9.3.「Docker Quickstart Terminalから Remote API経由で操作」した方
環境変数をもとにもどしましょう

```Bash:コマンド
unset DOCKER_HOST
unset DOCKER_TLS_VERIFY
unset DOCKER_CERT_PATH
env | grep DOCKER
```

以上