雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

EC2にDockerを導入する (インストールからコンテナ作成、Apache導入まで)

コマンドのチートシートはこちらを参照ください。
Docker CLI チートシート - Qoosky

目次

  1. Dockerインストール(ホストOS作業)
  2. Dockerコンテナ作成(ホストOS作業)
  3. Apacheインストール(ゲストOS作業)
  4. コンテナイメージの保存(ホストOS作業)
  5. コンテナ内のApacheを起動(ホストOS作業)
  6. 動作確認

環境

OS : Amazon Linux AMI 2016.09.0 (HVM), SSD Volume Type

作業

1.Dockerインストール(ホストOS作業)
  • ルートへ切り替え
# sudo su -
  • Dockerをyumのレポジトリからインストール
    AmazonLinuxではデフォルトでレポジトリに登録されているので、そのままyumでインストールできます。
# yum install -y docker
  • Docker起動&自動起動設定
# service docker start
# chkconfig docker on
# chkconfig

2.Dockerコンテナ作成(ホストOS作業)

  • DockerHubより、CentOS6のイメージをpull
# docker images
# docker pull centos:centos6
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              centos6             f07f6ca555a5        5 weeks ago         194.6 MB
  • コンテナのデプロイ(ホストOS作業)
    先ほどPULLしてきたCentOSのイメージをデプロイ
# docker run -i -t centos:centos6 /bin/bash

3.Apacheインストール(ゲストOS作業)

先ほどのデプロイしたコンテナ内で作業します。

  • Apacheインストール
# rpm -qa | grep httpd
# yum info httpd
# yum install -y httpd
# rpm -qa | grep httpd
httpd-tools-2.2.15-54.el6.centos.x86_64
httpd-2.2.15-54.el6.centos.x86_64

# service httpd start
# chkconfig httpd on
# chkconfig
  • コンテナからexit
# exit

4.コンテナイメージの保存(ホストOS作業)

Apacheを導入したコンテナイメージを保存します。

  • 作成したコンテナID確認
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
84f57724fd5a←確認        centos:centos6      "/bin/bash"         15 minutes ago      Exited (0) 4 minutes ago                        romantic_goldstine
a709cc377033        centos:centos6      "/bin/bash"         17 minutes ago      Exited (0) 16 minutes ago                       backstabbing_leavitt
  • コンテナイメージの保存
# docker commit 84f57724fd5a centos:httpd2.2.15
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              httpd2.2.15         221ae221bd50        8 seconds ago       295.3 MB  ←追加されたイメージ
centos              centos6             f07f6ca555a5        5 weeks ago         194.6 MB

5.コンテナ内のApacheを起動(ホストOS作業)

# docker ps
# docker run -d -p 8080:80 centos:httpd2.2.15 /usr/sbin/httpd -DFOREGROUND
# docker ps 
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                  NAMES
c281e513e098        centos:httpd2.2.15   "/usr/sbin/httpd -DFO"   3 seconds ago       Up 2 seconds        0.0.0.0:8080->80/tcp   clever_raman.2.15 /usr/sbin/httpd -DFOREGROUND

docker run -d -p 8080:80 centos:httpd2.2.15 /usr/sbin/httpd -DFOREGROUND
docker run → コンテナを作成
-d → バックグラウンドで起動
-p 8080:80 → ホストポート(8080)をゲストポート(80)へポートフォワード
centos:httpd2.2.15  → 雛形のコンテナイメージ
/usr/sbin/httpd -DFOREGROUND → コンテナ内の/usr/sbin/httpdを実行

6.動作確認

  • ブラウザより、コンテナ内のApacheへアクセス(SGはホスト側のポートを解放してください)
    http://[EC2のEIP]:8080/

f:id:ykoomaru:20161014153754p:plain

以上となります。
Docker楽しい。