AWS EC2 を使って、Docker の基本的な操作の流れをまとめてみました。
インストール、準備
まずは、EC2 上に Linux インスタンス(今回は Amazon Linuxを使用)を作成して、SSHでログイン。
Dockerをインストールする。
$ sudo yum install docker -y
$ sudo service docker start
動作確認。
$ sudo docker version
Client version: 1.6.0
Client API version: 1.18
Go version (client): go1.3.3
・・・・
毎回 sudo を打つのが面倒なので、ec2-user を docker グループに追加すると便利。
(いったんログアウトしてから、再ログインすると設定が反映される)
$ sudo usermod -G docker ec2-user
コンテナの起動からイメージの作成
イメージをpullして、コンテナを起動。
# CentOS のイメージを Pull。
# CentOS の7系に詳しくないので、ここでは6系をPullした。
$ docker pull centos:6.6
# コンテナを起動
$ docker run -it --name myweb centos:6.6 /bin/bash
コンテナ内で操作。httpd をインストールしてみた。
# httpd のインストール
[root@02e9b814e7e3 /]# yum install httpd -y
# 必要に応じてHTMLファイルを作成
[root@02e9b814e7e3 /]# vi /var/www/html/index.html
# httpd を開始して、コンテナ内からアクセスしてみる。
# IP アドレスは、ifconfig などから取得する。
[root@02e9b814e7e3 /]# service httpd start
[root@02e9b814e7e3 /]# curl http://172.17.0.4
# bash を終了して、コンテナから抜ける。
exit
コンテナからイメージを作成する。
# コンテナが終了したことを確認
$ docker ps -a
# コンテナを commit して、イメージを作成
# arturias の部分は、適当な名前に置き換えてください。
$ docker commit -m "Installed httpd" myweb arturias/myweb
# イメージが作成されたことを確認
$ docker images
作成したイメージからコンテナを起動
今回はEC2 上で動かしているので、まずは AWS のコンソールなどからセキュリティグループを追加して、HTTP(TCP 80) のアクセスを許可する。
それから、作成したイメージを使ってコンテナを起動。
# ここでは、-d オプションを指定してバックグラウンドで起動させる。
$ docker run -d -p 80:80 --name myweb-test arturias/myweb /usr/sbin/apachectl -DFOREGROUND
# いちおう、コンテナが動作しているか確認。
$ docker ps
この後、EC2 インスタンスの Public IP アドレスへ、ブラウザからアクセスするとWeb ページが見える。