前回(その2)からの続きです。
Docker をインストール
ここまで色々と準備をしましたが、ようやく Docker のインストールです。Docker の公式レポジトリが使えますので簡単です。この辺を参照にさくっといきましょう。
[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を使うことはほぼ必須となってきますので、この段階でいれてしまいます。このへんを参考にさらっと入れてしまいましょう。2015年12月9日現在は 1.5.2 が最新のようです。
[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 をまるっと追加したボリュームに移動し、元の場所にはシンボリックリンクを張ることで対応します。
[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 の動作確認の目的です。
画像が見にくくて申し訳ありませんが、CentOS7 のイメージを落としてきてコンテナを立ち上げ、コンテナの中の/bin/echoコマンドで'Hello World'を出力し、そのままコンテナは終了しています。最後の行にあるのが、コンテナのプロセスの状況ですが、「Exited(0) 12 seconds ago」というのが、それを表しています。
NAMES のところに「drunk_albattani」とか出てて、何も知らない頃の私は「何じゃこれ? 誰かが勝手に立ち上げたの?」とびっくりしていたのですが、--name オプションをつけないと勝手にそれっぽい名前をつけるという Docker の仕様でした。このへんを参考いただくといいかと思いますが、知らない人はびっくりしますw もっと無機質な名前をつけてくれた方が私はありがたかった…
ということで、その3まで書いてしまいましたが、ここまでで AWS/EC2 に CentOS7 を入れた Docker ホストの最低限というところだと思います。これ以外にも細かな設定や調整などは必要かと思いますので、各自対応ください。