OSS Fan ~OSSでLinuxサーバ構築~

作成日: 2015/11/15
更新日: 2015/11/22

OSSでLinuxサーバ構築

Docker 1.8.2でDockerfileからApacheのDockerイメージを生成しコンテナを起動

トップページOSSでLinuxサーバ構築 > Docker 1.8.2でDockerfileからApacheのDockerイメージを生成しコンテナを起動
このエントリーをはてなブックマークに追加

概要

 Docker 1.8.2でApacheによるWebサービスを提供する環境を構築します。 Dockerfileを作成し、CentOSの公式DockerイメージをベースにApacheをインストールしたDockerイメージを生成する手順を記述します。 生成したDockerイメージからDockerコンテナを起動し、ブラウザからアクセスして動作確認します。 また、Apacheが公開するWebコンテンツをDockerコンテナ外に配置し、Dockerコンテナから参照する方法も掲載します。

構成

想定環境

 DockerfileからDockerイメージを生成し、Dockerコンテナを起動するまでの流れは以下の通りです。 WebコンテンツをDockerコンテナ内に配置する場合と、コンテナ外(ホストOS上)に配置する場合の 2つの構成で構築手順をまとめていますので、それぞれの構成を図示しています。

Dockerコンテナ内にWebコンテンツを配置する場合

Dockerコンテナ外にWebコンテンツを配置する場合

サーバ構成

OSバージョン

■ホストOS
Red Hat Enterprise Linux 7.1 x86_64
■コンテナOS
CentOS 7.1.1503 x86_64

ソフトウェア・パッケージ一覧

 ホストOSには以下のパッケージがインストール済みであることが前提です。

  • docker-1.8.2-7.el7.x86_64.rpm

 コンテナOSには以下のパッケージをインストールします。 インストールはDockerfileを利用して後述の手順の中で実行します。 なお、バージョンは2015年11月15日時点のものです。 yumでインストールしているため、実行する時期によって異なることが 考えられますのでご注意ください。

  • apr-1.4.8-3.el7.x86_64
  • apr-util-1.5.2-6.el7.x86_64
  • httpd-tools-2.4.6-31.el7.centos.1.x86_64
  • centos-logos-70.0.6-3.el7.centos.noarch
  • mailcap-2.1.41-2.el7.noarch
  • httpd-2.4.6-31.el7.centos.1.x86_64

クライアント構成

OSバージョン

Windows 7 Ultimate SP1 64bit

ソフトウェア・パッケージ一覧

Internet Explorer 11

サーバ構築

設定(WebコンテンツをDockerコンテナ内に配置)

(1) Dockerfileの作成

 /data/docker/ ディレクトリ内にDockerfile(ファイル名はDockerfile_httpd01)を作成します。

# cd /data/docker/
# vi Dockerfile_httpd01
ファイル名:/data/docker/Dockerfile_httpd01
※ファイルを新規作成※
FROM            centos:latest
MAINTAINER      RANOCCI
ENV             container docker
RUN             yum update -y && yum clean all
RUN             yum install -y httpd && yum clean all
RUN             echo "Hello Docker!" > /var/www/html/index.html
RUN             systemctl enable httpd
EXPOSE          80

(2) Dockerイメージの生成

 作成したDockerfile(ファイル名はDockerfile_httpd01)からDockerイメージを生成します。 Dockerイメージの名前は『作成者/イメージ名』の形式に倣って『ranocci/httpd01』とします。

# docker build -f ./Dockerfile_httpd01 -t ranocci/httpd01 --no-cache=true .
Sending build context to Docker daemon 3.072 kB
Step 0 : FROM centos:latest
 ---> ce20c473cd8a
Step 1 : MAINTAINER RANOCCI
 ---> Running in 44ea6d17f23e
 ---> 5c65016e887a
Removing intermediate container 44ea6d17f23e
Step 2 : ENV container docker
 ---> Running in 5de7a7e2ddf8
 ---> bc8937dede5f
Removing intermediate container 5de7a7e2ddf8
Step 3 : RUN yum update -y && yum clean all
 ---> Running in fd25a839d9b6
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: ftp.nara.wide.ad.jp
 * extras: mirror.vodien.com
 * updates: mirror.vodien.com
Resolving Dependencies
--> Running transaction check
---> Package coreutils.x86_64 0:8.22-11.el7 will be updated
---> Package coreutils.x86_64 0:8.22-12.el7_1.2 will be an update
---> Package gmp.x86_64 1:6.0.0-11.el7 will be updated
---> Package gmp.x86_64 1:6.0.0-12.el7_1 will be an update
---> Package krb5-libs.x86_64 0:1.12.2-14.el7 will be updated
---> Package krb5-libs.x86_64 0:1.12.2-15.el7_1 will be an update
---> Package nspr.x86_64 0:4.10.8-1.el7_1 will be updated
---> Package nspr.x86_64 0:4.10.8-2.el7_1 will be an update
---> Package nss.x86_64 0:3.19.1-5.el7_1 will be updated
---> Package nss.x86_64 0:3.19.1-7.el7_1.2 will be an update
---> Package nss-softokn.x86_64 0:3.16.2.3-12.el7_1 will be updated
---> Package nss-softokn.x86_64 0:3.16.2.3-13.el7_1 will be an update
---> Package nss-softokn-freebl.x86_64 0:3.16.2.3-12.el7_1 will be updated
---> Package nss-softokn-freebl.x86_64 0:3.16.2.3-13.el7_1 will be an update
---> Package nss-sysinit.x86_64 0:3.19.1-5.el7_1 will be updated
---> Package nss-sysinit.x86_64 0:3.19.1-7.el7_1.2 will be an update
---> Package nss-tools.x86_64 0:3.19.1-5.el7_1 will be updated
---> Package nss-tools.x86_64 0:3.19.1-7.el7_1.2 will be an update
---> Package nss-util.x86_64 0:3.19.1-3.el7_1 will be updated
---> Package nss-util.x86_64 0:3.19.1-4.el7_1 will be an update
---> Package openldap.x86_64 0:2.4.39-6.el7 will be updated
---> Package openldap.x86_64 0:2.4.39-7.el7.centos will be an update
---> Package pam.x86_64 0:1.1.8-12.el7 will be updated
---> Package pam.x86_64 0:1.1.8-12.el7_1.1 will be an update
---> Package sqlite.x86_64 0:3.7.17-4.el7 will be updated
---> Package sqlite.x86_64 0:3.7.17-6.el7_1.1 will be an update
---> Package tzdata.noarch 0:2015f-1.el7 will be updated
---> Package tzdata.noarch 0:2015g-1.el7 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                Arch       Version                    Repository   Size
================================================================================
Updating:
 coreutils              x86_64     8.22-12.el7_1.2            updates     3.2 M
 gmp                    x86_64     1:6.0.0-12.el7_1           updates     280 k
 krb5-libs              x86_64     1.12.2-15.el7_1            updates     826 k
 nspr                   x86_64     4.10.8-2.el7_1             updates     126 k
 nss                    x86_64     3.19.1-7.el7_1.2           updates     851 k
 nss-softokn            x86_64     3.16.2.3-13.el7_1          updates     305 k
 nss-softokn-freebl     x86_64     3.16.2.3-13.el7_1          updates     204 k
 nss-sysinit            x86_64     3.19.1-7.el7_1.2           updates      52 k
 nss-tools              x86_64     3.19.1-7.el7_1.2           updates     480 k
 nss-util               x86_64     3.19.1-4.el7_1             updates      71 k
 openldap               x86_64     2.4.39-7.el7.centos        updates     344 k
 pam                    x86_64     1.1.8-12.el7_1.1           updates     714 k
 sqlite                 x86_64     3.7.17-6.el7_1.1           updates     394 k
 tzdata                 noarch     2015g-1.el7                updates     431 k

Transaction Summary
================================================================================
Upgrade  14 Packages

Total download size: 8.2 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
warning: /var/cache/yum/x86_64/7/updates/packages/nspr-4.10.8-2.el7_1.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for nspr-4.10.8-2.el7_1.x86_64.rpm is not installed
--------------------------------------------------------------------------------
Total                                              373 kB/s | 8.2 MB  00:22
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-1.1503.el7.centos.2.8.x86_64 (@CentOS)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : nspr-4.10.8-2.el7_1.x86_64                                  1/28
  Updating   : nss-util-3.19.1-4.el7_1.x86_64                              2/28
  Updating   : nss-softokn-freebl-3.16.2.3-13.el7_1.x86_64                 3/28
  Updating   : 1:gmp-6.0.0-12.el7_1.x86_64                                 4/28
  Updating   : coreutils-8.22-12.el7_1.2.x86_64                            5/28
  Updating   : sqlite-3.7.17-6.el7_1.1.x86_64                              6/28
  Updating   : nss-softokn-3.16.2.3-13.el7_1.x86_64                        7/28
  Updating   : nss-sysinit-3.19.1-7.el7_1.2.x86_64                         8/28
  Updating   : nss-3.19.1-7.el7_1.2.x86_64                                 9/28
  Updating   : nss-tools-3.19.1-7.el7_1.2.x86_64                          10/28
  Updating   : openldap-2.4.39-7.el7.centos.x86_64                        11/28
  Updating   : pam-1.1.8-12.el7_1.1.x86_64                                12/28
  Updating   : krb5-libs-1.12.2-15.el7_1.x86_64                           13/28
  Updating   : tzdata-2015g-1.el7.noarch                                  14/28
  Cleanup    : openldap-2.4.39-6.el7.x86_64                               15/28
  Cleanup    : tzdata-2015f-1.el7.noarch                                  16/28
  Cleanup    : nss-tools-3.19.1-5.el7_1.x86_64                            17/28
  Cleanup    : nss-sysinit-3.19.1-5.el7_1.x86_64                          18/28
  Cleanup    : nss-3.19.1-5.el7_1.x86_64                                  19/28
  Cleanup    : nss-softokn-3.16.2.3-12.el7_1.x86_64                       20/28
  Cleanup    : nss-util-3.19.1-3.el7_1.x86_64                             21/28
  Cleanup    : krb5-libs-1.12.2-14.el7.x86_64                             22/28
  Cleanup    : pam-1.1.8-12.el7.x86_64                                    23/28
  Cleanup    : coreutils-8.22-11.el7.x86_64                               24/28
  Cleanup    : 1:gmp-6.0.0-11.el7.x86_64                                  25/28
  Cleanup    : nspr-4.10.8-1.el7_1.x86_64                                 26/28
  Cleanup    : sqlite-3.7.17-4.el7.x86_64                                 27/28
  Cleanup    : nss-softokn-freebl-3.16.2.3-12.el7_1.x86_64                28/28
  Verifying  : nss-softokn-3.16.2.3-13.el7_1.x86_64                        1/28
  Verifying  : openldap-2.4.39-7.el7.centos.x86_64                         2/28
  Verifying  : tzdata-2015g-1.el7.noarch                                   3/28
  Verifying  : pam-1.1.8-12.el7_1.1.x86_64                                 4/28
  Verifying  : coreutils-8.22-12.el7_1.2.x86_64                            5/28
  Verifying  : sqlite-3.7.17-6.el7_1.1.x86_64                              6/28
  Verifying  : 1:gmp-6.0.0-12.el7_1.x86_64                                 7/28
  Verifying  : nss-sysinit-3.19.1-7.el7_1.2.x86_64                         8/28
  Verifying  : nss-3.19.1-7.el7_1.2.x86_64                                 9/28
  Verifying  : nss-tools-3.19.1-7.el7_1.2.x86_64                          10/28
  Verifying  : nss-softokn-freebl-3.16.2.3-13.el7_1.x86_64                11/28
  Verifying  : nspr-4.10.8-2.el7_1.x86_64                                 12/28
  Verifying  : krb5-libs-1.12.2-15.el7_1.x86_64                           13/28
  Verifying  : nss-util-3.19.1-4.el7_1.x86_64                             14/28
  Verifying  : openldap-2.4.39-6.el7.x86_64                               15/28
  Verifying  : pam-1.1.8-12.el7.x86_64                                    16/28
  Verifying  : tzdata-2015f-1.el7.noarch                                  17/28
  Verifying  : sqlite-3.7.17-4.el7.x86_64                                 18/28
  Verifying  : nss-softokn-freebl-3.16.2.3-12.el7_1.x86_64                19/28
  Verifying  : nss-util-3.19.1-3.el7_1.x86_64                             20/28
  Verifying  : nspr-4.10.8-1.el7_1.x86_64                                 21/28
  Verifying  : nss-softokn-3.16.2.3-12.el7_1.x86_64                       22/28
  Verifying  : 1:gmp-6.0.0-11.el7.x86_64                                  23/28
  Verifying  : coreutils-8.22-11.el7.x86_64                               24/28
  Verifying  : nss-tools-3.19.1-5.el7_1.x86_64                            25/28
  Verifying  : nss-3.19.1-5.el7_1.x86_64                                  26/28
  Verifying  : nss-sysinit-3.19.1-5.el7_1.x86_64                          27/28
  Verifying  : krb5-libs-1.12.2-14.el7.x86_64                             28/28

Updated:
  coreutils.x86_64 0:8.22-12.el7_1.2
  gmp.x86_64 1:6.0.0-12.el7_1
  krb5-libs.x86_64 0:1.12.2-15.el7_1
  nspr.x86_64 0:4.10.8-2.el7_1
  nss.x86_64 0:3.19.1-7.el7_1.2
  nss-softokn.x86_64 0:3.16.2.3-13.el7_1
  nss-softokn-freebl.x86_64 0:3.16.2.3-13.el7_1
  nss-sysinit.x86_64 0:3.19.1-7.el7_1.2
  nss-tools.x86_64 0:3.19.1-7.el7_1.2
  nss-util.x86_64 0:3.19.1-4.el7_1
  openldap.x86_64 0:2.4.39-7.el7.centos
  pam.x86_64 0:1.1.8-12.el7_1.1
  sqlite.x86_64 0:3.7.17-6.el7_1.1
  tzdata.noarch 0:2015g-1.el7

Complete!
Loaded plugins: fastestmirror
Cleaning repos: base extras systemdcontainer updates
Cleaning up everything
Cleaning up list of fastest mirrors
 ---> 861cae4457ed
Removing intermediate container fd25a839d9b6
Step 4 : RUN yum install -y httpd && yum clean all
 ---> Running in 6a077b3f8a21
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirror.fairway.ne.jp
 * extras: mirror.fairway.ne.jp
 * updates: mirror.fairway.ne.jp
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-31.el7.centos.1 will be installed
--> Processing Dependency: httpd-tools = 2.4.6-31.el7.centos.1 for package: httpd-2.4.6-31.el7.centos.1.x86_64
--> Processing Dependency: system-logos >= 7.92.1-1 for package: httpd-2.4.6-31.el7.centos.1.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-31.el7.centos.1.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-31.el7.centos.1.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-31.el7.centos.1.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-3.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package centos-logos.noarch 0:70.0.6-3.el7.centos will be installed
---> Package httpd-tools.x86_64 0:2.4.6-31.el7.centos.1 will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package           Arch        Version                       Repository    Size
================================================================================
Installing:
 httpd             x86_64      2.4.6-31.el7.centos.1         updates      2.7 M
Installing for dependencies:
 apr               x86_64      1.4.8-3.el7                   base         103 k
 apr-util          x86_64      1.5.2-6.el7                   base          92 k
 centos-logos      noarch      70.0.6-3.el7.centos           updates       21 M
 httpd-tools       x86_64      2.4.6-31.el7.centos.1         updates       79 k
 mailcap           noarch      2.1.41-2.el7                  base          31 k

Transaction Summary
================================================================================
Install  1 Package (+5 Dependent packages)

Total download size: 24 M
Installed size: 31 M
Downloading packages:
--------------------------------------------------------------------------------
Total                                              1.5 MB/s |  24 MB  00:15
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-3.el7.x86_64                                       1/6
  Installing : apr-util-1.5.2-6.el7.x86_64                                  2/6
  Installing : httpd-tools-2.4.6-31.el7.centos.1.x86_64                     3/6
  Installing : centos-logos-70.0.6-3.el7.centos.noarch                      4/6
  Installing : mailcap-2.1.41-2.el7.noarch                                  5/6
  Installing : httpd-2.4.6-31.el7.centos.1.x86_64                           6/6
  Verifying  : apr-1.4.8-3.el7.x86_64                                       1/6
  Verifying  : mailcap-2.1.41-2.el7.noarch                                  2/6
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                  3/6
  Verifying  : httpd-tools-2.4.6-31.el7.centos.1.x86_64                     4/6
  Verifying  : centos-logos-70.0.6-3.el7.centos.noarch                      5/6
  Verifying  : httpd-2.4.6-31.el7.centos.1.x86_64                           6/6

Installed:
  httpd.x86_64 0:2.4.6-31.el7.centos.1

Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7
  apr-util.x86_64 0:1.5.2-6.el7
  centos-logos.noarch 0:70.0.6-3.el7.centos
  httpd-tools.x86_64 0:2.4.6-31.el7.centos.1
  mailcap.noarch 0:2.1.41-2.el7

Complete!
Loaded plugins: fastestmirror
Cleaning repos: base extras systemdcontainer updates
Cleaning up everything
Cleaning up list of fastest mirrors
 ---> 0aaa616249ee
Removing intermediate container 6a077b3f8a21
Step 5 : RUN echo "Hello Docker!" > /var/www/html/index.html
 ---> Running in 3b1ffe14c82e
 ---> 357d144138ae
Removing intermediate container 3b1ffe14c82e
Step 6 : RUN systemctl enable httpd
 ---> Running in aab22e2a62a8
 ---> 2bbb6907f66a
Removing intermediate container aab22e2a62a8
Step 7 : EXPOSE 80
 ---> Running in 5a591ecf0361
 ---> bda5163b549b
Removing intermediate container 5a591ecf0361
Successfully built bda5163b549b

(3) 生成したDockerイメージの確認

 Dockerイメージを一覧表示し、『ranocci/httpd01』という名前のイメージが生成されていることを確認します。

# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED              VIRTUAL SIZE
ranocci/httpd01                        latest              bda5163b549b        About a minute ago   256.4 MB

(4) Dockerコンテナの起動

 生成したDockerイメージからDockerコンテナを起動します。

# docker run -d --privileged --name web01 -i -t -p 80:80 ranocci/httpd01:latest /sbin/init
dadb98f537205ba639c4531b2fdb6ea615d377167d52ed7f8b462c6edd79c755

(5) Dockerコンテナの起動確認

 Dockerコンテナが起動したことを確認します。 Dockerコンテナが起動し、コンテナIDが割り当てられていること、ステータスがUPになっていることを確認します。 また、80番ポートでDockerがリッスンしていることを確認します。

# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                NAMES
dadb98f53720        ranocci/httpd01:latest   "/sbin/init"        7 minutes ago       Up 7 minutes        0.0.0.0:80->80/tcp   web01
# netstat -tanp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      32558/sshd
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      1696/postgres
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1687/master
tcp        0     96 192.168.0.106:22        192.168.0.101:53223     ESTABLISHED 20405/sshd: root@pt
tcp6       0      0 :::80                   :::*                    LISTEN      25086/docker-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      32558/sshd
tcp6       0      0 :::5432                 :::*                    LISTEN      1696/postgres
tcp6       0      0 ::1:25                  :::*                    LISTEN      1687/master

 以上でDockerイメージの生成とApacheが稼働するDockerコンテナの起動は終わりです。

動作テスト

(1) Dockerコンテナの停止・起動テスト

 Apacheが稼働するDockerコンテナの停止・起動確認を行います。

# docker stop web01
web01
# docker ps -a
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS                        PORTS               NAMES
dadb98f53720        ranocci/httpd01:latest   "/sbin/init"        About an hour ago   Exited (137) 22 seconds ago                       web01
# docker start web01
web01
# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                NAMES
dadb98f53720        ranocci/httpd01:latest   "/sbin/init"        About an hour ago   Up 6 seconds        0.0.0.0:80->80/tcp   web01

(2) Dockerコンテナへのログイン確認

 稼働中のDockerコンテナに接続して、コンテナ内のCentOS上でApacheの稼働状態を確認します。

# docker exec -i -t web01 /bin/bash
[root@dadb98f53720 /]# ps -ef | grep httpd
root        66     1  0 23:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      67    66  0 23:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      68    66  0 23:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      69    66  0 23:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      70    66  0 23:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache      71    66  0 23:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root        89    72  0 23:37 ?        00:00:00 grep --color=auto httpd
[root@dadb98f53720 /]# systemctl status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
  Drop-In: /run/systemd/system/httpd.service.d
           mq00-docker.conf
   Active: active (running) since Sat 2015-11-14 23:11:40 UTC; 33min ago
 Main PID: 66 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/docker-dadb98f537205ba639c4531b2fdb6ea615d377167d52ed7f8b462c6edd79c755.scope/system.slice/httpd.service
           tq66 /usr/sbin/httpd -DFOREGROUND
           tq67 /usr/sbin/httpd -DFOREGROUND
           tq68 /usr/sbin/httpd -DFOREGROUND
           tq69 /usr/sbin/httpd -DFOREGROUND
           tq70 /usr/sbin/httpd -DFOREGROUND
           mq71 /usr/sbin/httpd -DFOREGROUND
           ? 66 /usr/sbin/httpd -DFOREGROUND

Nov 14 23:11:40 dadb98f53720 systemd[1]: Starting The Apache HTTP Server...
Nov 14 23:11:40 dadb98f53720 httpd[66]: AH00558: httpd: Could not reliably determine the server's fully qualifie...ssage
Nov 14 23:11:40 dadb98f53720 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@dadb98f53720 conf]# exit
exit
#

(3) ブラウザでの接続確認

 Dockerが稼働するサーバとは異なるクライアントPCからI.E.11で接続確認を行います。 Dockerが稼働するサーバのIPアドレスが192.168.0.106なので、URLにはこのアドレスを指定します。 Dockerが稼働するサーバに80番ポートで接続すると、Dockerコンテナに転送されル設定になっています(Dockerコンテナ起動時に指定したオプションによる)。

 以上でApacheが稼働するDockerコンテナの動作確認は終わりです。

設定(WebコンテンツをホストOS上に格納)

 開発済みのWebコンテンツを公開するのであればコンテナ内にコンテンツのデータも含めてイメージ化した方がデプロイが楽です。 一方コンテンツの開発で利用する場合は、都度コンテナ内にデータを配置するのが煩雑なため、ホストOS上のデータを Dockerコンテナ内のApacheが読み込んで表示するように構成した方が利用しやすいかと思います。 (そもそもDockerの概念に合っていない?かもしれませんが、構成の一つの形として例示しておきます)

 DockerコンテナからホストOS上のデータを利用するには、Dockerコンテナ起動時にディスクのマッピングを設定します。 ここでは作成済みのDockerコンテナを一度削除して、ディスクのマッピングを行う形で新規にDockerコンテナを作成し直すことにします。

(1) Dockerコンテナの停止・削除

 稼働中のApacheのDockerコンテナを停止し、削除します。

# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                NAMES
dadb98f53720        ranocci/httpd01:latest   "/sbin/init"        3 hours ago         Up About an hour    0.0.0.0:80->80/tcp   web01
# docker stop web01
web01
# docker rm web01
web01
# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

(2) Webコンテンツ格納ディレクトリの作成

 ホストOS上にWebコンテンツを格納するためのディレクトリと表示テスト用のコンテンツを作成します。

# cd /data/docker/
# mkdir web01
# cd web01/
# echo 'Hello! Docker Web Site!' > index.html
# ls -l
合計 4
-rw-r--r-- 1 root root 24 11月 15 10:29 index.html
# cd /

(3) Dockerコンテナの起動

 Dockerイメージは先ほど作成したものをそのまま利用します。 Dockerコンテナ起動時にホストOSのディレクトリとDockerコンテナ内のディレクトリのマッピングを追加で設定します(-vオプション部分)。

# docker run -d --privileged --name web01 -i -t -p 80:80 -v /data/docker/web01:/var/www/html ranocci/httpd01:latest /sbin/init
1a71715517084f401dd5abdc3d457bb5066b9c8e35e8850be90c244f81f10fdc

(4) Dockerコンテナの起動確認

 Dockerコンテナが起動したことを確認します。

# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS                NAMES
1a7171551708        ranocci/httpd01:latest   "/sbin/init"        14 seconds ago      Up 13 seconds       0.0.0.0:80->80/tcp   web01

(5) ブラウザでの接続確認

 Dockerが稼働するサーバとは異なるクライアントPCからI.E.11で接続確認を行います。 ホストOS上に作成したindex.htmlの内容が表示されることが分かります。

プロフィール

らのっち

損害保険会社のIT企画部に勤務するSEです。OSSを勉強中です。

<所属>
日本PostgreSQLユーザ会とくしまOSS普及協議会

■■■ 当サイトは Internet Explorer 11 と Mozilla Firefox 43 で動作確認済みです。 ■■■