MacにDocker

## 参考
http://qiita.com/hshimo/items/e24b1fbfbf775ec7c941
http://paiza.hatenablog.com/entry/docker_for_mac
http://www.shoeisha.co.jp/book/detail/9784798141022

# 環境
## ホスト
MacBook
Mac OS X El Capitan ver10.11.6

```
機種名：             MacBook
機種 ID：            MacBook8,1
プロセッサ名：         Intel Core M
プロセッサ速度：        1.3 GHz
プロセッサの個数：      1
コアの総数：           2
二次キャッシュ（コア単位）： 256 KB
三次キャッシュ：        　4 MB
メモリ：               8 GB
```

## Docker
https://www.docker.com/
ver1.12.0-a

# インストール
公式：https://docs.docker.com/docker-for-mac/

* Download Docker for Mac からdmgファイルをダウンロードしてインストール
* 成功してツールバーにクジラが表示されたら、そこにポップアップされてた以下をとりあえず実行

```
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

$ docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.0
...（省略）

$ docker version
Client:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 21:15:28 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        Thu Jul 28 21:15:28 2016
 OS/Arch:      linux/amd64

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
```

## バージョン確認
公式に従って

```
$ docker --version
Docker version 1.12.0, build 8eab29e

$ docker-compose --version
docker-compose version 1.8.0, build f3628c7

$ docker-machine --version
docker-machine version 0.8.0, build b85aac1
```

# Hello World
公式に従って

```
$ docker run hello-world
```

```
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              c54a2cc56cbb        7 weeks ago         1.848 kB
```
OKなのかな？

# Nginx
公式に従って

### 起動
```
$ docker run -d -p 80:80 --name webserver nginx
```
```
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              c54a2cc56cbb        7 weeks ago         1.848 kB
nginx               latest              0d409d33b27e        11 weeks ago        182.8 MB
```
```
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
ab4544965a83        nginx               "nginx -g 'daemon off"   20 minutes ago      Up 20 minutes       0.0.0.0:80->80/tcp, 443/tcp   webserver
```

http://localhost にアクセス
<img width="531" alt="スクリーンショット 2016-08-20 13.24.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/d182fadb-c6e5-6157-e75f-6fe9babb41c9.png">

イケたっぽい

### 停止

```
$ docker stop webserver
webserver
```
```
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
```

# Dockerホストに入る
参考にしたがって

```
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
```
```
Welcome to Moby alpha
Kernel 4.4.15-moby on an x86_64 (/dev/ttyS0)

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

moby login: root
Welcome to the Moby alpha, based on Alpine Linux.
moby:~#
```
＃ 「Ctrl+a k」で抜けられます

# Kitematic
* ツールバーのクジラをクリックして、「Open Kitematic」をクリックします。
* ポップアップの中のリンクをクリックしてzipファイルをダウンロード。
* 解凍して、appファイルを実行。
* Kitematic(Beta)が起動します。
<img width="919" alt="スクリーンショット 2016-08-20 14.13.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/8d3f5666-ad69-2dd3-a646-41dea17b0eec.png">
* [Docke Cloud](https://cloud.docker.com/) に登録した情報でログインします。
<img width="847" alt="スクリーンショット 2016-08-20 14.23.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/81753/1119974f-fe25-1e3c-1547-5fac4c0bbafd.png">
* Docker Hubに公開されているイメージから、試しに「hello-world-nginx」を選択し「CREATE」
* イメージが追加されて実行されています。

```
$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
hello-world                   latest              c54a2cc56cbb        7 weeks ago         1.848 kB
nginx                         latest              0d409d33b27e        11 weeks ago        182.8 MB
kitematic/hello-world-nginx   latest              03b4557ad7b9        14 months ago       7.913 MB
```
```
$ docker ps
CONTAINER ID        IMAGE                                COMMAND             CREATED             STATUS              PORTS                   NAMES
2841afa972c6        kitematic/hello-world-nginx:latest   "sh /start.sh"      3 minutes ago       Up 3 minutes        0.0.0.0:32768->80/tcp   hello-world-nginx
```

# Dockerイメージの操作
CentOSのイメージを取得します
https://hub.docker.com/_/centos/

## イメージの取得
イメージ取得コマンド

```
$ docker pull [オプション] イメージ名[:タグ名]
```
最新

```
$ docker pull centos:latest
```
タグを指定

```
$ docker pull centos:7
```
全てのタグのイメージを取得

```
$ docker pull -a centos
```
取得先URLを指定

```
$ docker pull registry.hub.docker.com/centos:7
```

取得したイメージの確認

```
$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
centos                        latest              970633036444        3 weeks ago         196.7 MB　　★
hello-world                   latest              c54a2cc56cbb        7 weeks ago         1.848 kB
nginx                         latest              0d409d33b27e        11 weeks ago        182.8 MB
kitematic/hello-world-nginx   latest              03b4557ad7b9        14 months ago       7.913 MB
```

## イメージの詳細表示

```
$ docker inspect [オプション] コンテナ識別子orイメージ識別子
```
```
$ docker inspect centos
```

## イメージの検索

```
$ docker search [オプション] 検索キーワード
```
```
$ docker search centos
```

## イメージの削除

```
$ docker rmi [オプション] イメージ名
```
```
$ docker rmi centos
```

## イメージのtag設定
centos7のイメージを取得して、Docker Hubのユーザ名でイメージ名mycentos、バージョン1.0でtag設定

### イメージの取得
```
$ docker pull centos:7 
```
### 取得したイメージの確認
```
$ docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
centos                     7                   980e0e4c79ec        4 weeks ago         196.8 MB
```
### tag設定
```
$ docker tag centos:7 <Docker Hubのユーザ名>/mycentos:1.0
```
### tag設定確認
```
$ docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
centos                                   7                   980e0e4c79ec        4 weeks ago         196.8 MB
<Docker Hubのユーザ名>/mycentos            1.0                 980e0e4c79ec        4 weeks ago         196.8 MB
```
この時、tag設定したイメージともとのイメージのIMAGE IDが同じになっていることを確認


## イメージのアップロード（Docker Hubにアップロード）
Docker Hubにログインして、アップロード、ログアウトします
### Docker Hubにログイン
```
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: <Docker Hubのユーザ名>
Password: <パスワード>
Login Succeeded
```
ユーザ名とパスワードは`docker login`コマンドのオプションで指定することも可能です。

```
$ docker login -u <Docker Hubのユーザ名> -p <パスワード>
Login Succeeded
```
### イメージのアップロード
```
$ docker push <Docker Hubのユーザ名>/イメージ名[:タグ名]
```
### Docker Hubからログアウト
```
$ docker logout
```

## コンテナからイメージの作成
http://qiita.com/sakasa/items/89c53ea48a163dc782b6

## Dockerfile
http://qiita.com/sakasa/items/6217562e90a49baad5d7

## Docker Compose
http://qiita.com/sakasa/items/3fe93c68230fecc4ad71




#