読者です 読者をやめる 読者になる 読者になる

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

AWS Docker Linux

コマンドのチートシートはこちらを参照ください。
Docker チートシート - 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
# 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作業)

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

# 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楽しい。