AWS/EC2にCentOS7を入れてDockerホストを作成　その3


[前回（その2）からの続き](http://qiita.com/ABE_TAKASHI/items/3adc28fd7f4fb2a2b993)です。

### Docker をインストール

ここまで色々と準備をしましたが、ようやく Docker のインストールです。Docker の公式レポジトリが使えますので簡単です。[この辺](https://blog.docker.com/2015/07/new-apt-and-yum-repos/)を参照にさくっといきましょう。

```shell-session:
[root@ip-XXX-XXX-XXX-XXX ~]# curl -sSL https://get.docker.com/ | sh

（もろもろの出力は略）

  sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!

[root@ip-XXX-XXX-XXX-XXX ~]# systemctl start docker

[root@ip-XXX-XXX-XXX-XXX ~]# systemctl enable docker
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'

[root@ip-XXX-XXX-XXX-XXX ~]# useradd docker-op

[root@ip-XXX-XXX-XXX-XXX ~]# usermod -aG docker docker-op
```

これで /etc/yum.repos.d/docker-main.repo というファイルが作られて、yumでインストールを行うところまで勝手にやってくれます。以降はyumで簡単にアップデートできますね。

Docker を立ち上げて、自動起動するように設定をしました。インストール時の出力の最後にdockerグループのユーザを追加しろと書いてあったので、docker-op というユーザを作りました。root で作業する人は不要でしょう。

### Docker Composeもインストール

Docker を使う上で、後々はDocker Composeを使うことはほぼ必須となってきますので、この段階でいれてしまいます。[このへん](https://github.com/docker/compose/releases)を参考にさらっと入れてしまいましょう。2015年12月9日現在は 1.5.2 が最新のようです。

```shell-session:
[root@ip-XXX-XXX-XXX-XXX ~]# curl -L https://github.com/docker/compose/releases/download/1.5.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   600    0   600    0     0    602      0 --:--:-- --:--:-- --:--:--   602
100 7739k  100 7739k    0     0  1050k      0  0:00:07  0:00:07 --:--:-- 1820k

[root@ip-XXX-XXX-XXX-XXX ~]# chmod +x /usr/local/bin/docker-compose
```

### Docker のファイルが置かれるディレクトリを、追加したボリュームに移動

Docker でいっぱいイメージを落としてきたり、コンテナを立てたりすると、あっという間にディスクを使い果たしてしまいます。ここで、Docker が追加したボリュームを使うように修正します。一度、Docker のサービスを停止して、/var/lib/docker をまるっと追加したボリュームに移動し、元の場所にはシンボリックリンクを張ることで対応します。

```shell-session:
[root@ip-XXX-XXX-XXX-XXX ~]# systemctl stop docker

[root@ip-XXX-XXX-XXX-XXX ~]# mkdir -p /mnt/ebs/var/lib

[root@ip-XXX-XXX-XXX-XXX ~]# mv /var/lib/docker /mnt/ebs/var/lib/

[root@ip-XXX-XXX-XXX-XXX ~]# cd /var/lib/
[root@ip-XXX-XXX-XXX-XXX lib]# ln -s /mnt/ebs/var/lib/docker

[root@ip-XXX-XXX-XXX-XXX lib]# systemctl start docker
```

Docker のサービスが普通に立ち上がれば問題ないでしょう。

### Dockerのテスト 'Hello World'を出力

Docker の最小限のテストをします。他の説明サイトでも'Hello World'を出力する説明がよく出ていますが、Docker の仕組みが分かっていないと、この意味もよく分かんないですよね。けど、頑張って使っていけばいずれ分かるようになりますので、ここでは深く説明せず、Docker の動作確認の目的です。

![008.png](https://qiita-image-store.s3.amazonaws.com/0/104477/3f106614-5997-cf85-42cf-8fa58928e117.png)

画像が見にくくて申し訳ありませんが、CentOS7 のイメージを落としてきてコンテナを立ち上げ、コンテナの中の/bin/echoコマンドで'Hello World'を出力し、そのままコンテナは終了しています。最後の行にあるのが、コンテナのプロセスの状況ですが、「Exited(0) 12 seconds ago」というのが、それを表しています。

NAMES のところに「drunk_albattani」とか出てて、何も知らない頃の私は「何じゃこれ？　誰かが勝手に立ち上げたの？」とびっくりしていたのですが、--name オプションをつけないと勝手にそれっぽい名前をつけるという Docker の仕様でした。[このへん](http://deeeet.com/writing/2014/07/15/docker-container-name/)を参考いただくといいかと思いますが、知らない人はびっくりしますｗ　もっと無機質な名前をつけてくれた方が私はありがたかった…

ということで、その3まで書いてしまいましたが、ここまでで AWS/EC2 に CentOS7 を入れた Docker ホストの最低限というところだと思います。これ以外にも細かな設定や調整などは必要かと思いますので、各自対応ください。