ShinobiLayer: RHELでDockerを使う時のメモ

#Dockerの導入
以下によると、2015年6月29日現在における最新のDocker（1.7.0)を利用するためには、Kernel-3.10以上（つまりRHEL7）が推奨されています。RHEL6.6でも稼動するようですが、あくまで例外措置であり、幾つかのバグがあるとのこと。
https://docs.docker.com/installation/rhel/
https://docs.docker.com/installation/binaries/

ということで、SoftLayerでRHEL7を導入し、カーネルを最新化した上で、Dockerを導入することにします。

```text:Docker導入
# yum -y update

# uname -r
3.10.0-229.7.2.el7.x86_64

# curl -O -sSL https://get.docker.com/rpm/1.7.0/centos-7/RPMS/x86_64/docker-engine-1.7.0-1.el7.centos.x86_64.rpm

# yum localinstall --nogpgcheck docker-engine-1.7.0-1.el7.centos.x86_64.rpm

# yum list installed | grep -i docker
docker-engine.x86_64             1.7.0-1.el7.centos          @/docker-engine-1.7.0-1.el7.centos.x86_64

# systemctl enable docker
# systemctl start docker
# systemctl status docker
docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled)
   Active: active (running) since Mon 2015-06-22 23:05:49 JST; 2min 31s ago
     Docs: https://docs.docker.com
 Main PID: 3628 (docker)
   CGroup: /system.slice/docker.service
           └─3628 /usr/bin/docker -d -H fd://
（途中略）

# docker version
Client version: 1.7.0
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 0baf609
OS/Arch (client): linux/amd64
Server version: 1.7.0
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 0baf609
OS/Arch (server): linux/amd64

# docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-202:2-1230253-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: extfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 307.2 MB
 Data Space Total: 107.4 GB
 Data Space Available: 23.92 GB
 Metadata Space Used: 733.2 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.10.0-229.7.2.el7.x86_64
Operating System: Red Hat Enterprise Linux
CPUs: 2
Total Memory: 3.452 GiB
Name: myrhel07
ID: PZXN:457N:V4O4:QEFI:TERL:HW4Y:OXBI:N7ZN:TGHQ:AKLS:MLYH:XK6G

```
#よく使うコマンド例

※ <タグ名>を省略するとlatestタグになる

```text:イメージ操作
検索
# docker search centos

ダウンロード
# docker pull centos:latest

確認
# docker images

削除
# docker rmi centos:latest
```


```text:コンテナ操作
作成のみ（実行はしない）
# docker create centos:latest

実行のみ
# docker start b61b473470c7

作成＋foreground実行。
コンテナ終了時に削除したい時は--rmを付ける。
# docker run -it centos:latest /bin/bash
# docker run --rm -it centos:latest /bin/bash

作成＋background実行。
--nameで自由にコンテナ名が変更可能
-pでポート割り当て
-vでホストのディレクトリをマウント
-eで環境変数渡し
# docker run -d nginx:latest
# docker run -d --name shinoibilayer nginx:latest
# docker run -d -p 8080:80 -v /work/log/nginx:/var/log/nginx -e APP_HOST=`hostname` nginx:latest

実行中のコンテナにログイン
# docker exec -it b61b473470c7 /bin/bash

コンテナ終了
# docker stop b61b473470c7

コンテナ終了（強制停止）
# docker kill b61b473470c7

コンテナ一覧確認（現在稼働中のもののみ）
# docker ps

コンテナ一覧確認（停止中のものも含めて全て）
# docker ps -a

コンテナで稼働中のプロセス確認
# docker top b61b473470c7

コンテナのリソース使用状況の確認
# docker stats b61b473470c7

ホスト ->　コンテナでNATされているポートの確認
# docker port b61b473470c7

コンテナ削除（停止中のもの）
# docker rm b61b473470c7

コンテナ削除（起動中のものを強制停止した後に削除）
# docker rm -f b61b473470c7

```

```text:サイズの確認
イメージやコンテナーは/var/lib/docker配下に作成されるため、初期状態でのサイズを確認しておく。
# du -sm /var/lib/docker/
299     /var/lib/docker/
```