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コンテナ内に配置)
Dockerfileの作成
/data/docker/ ディレクトリ内にDockerfile(ファイル名はDockerfile_httpd01)を作成します。
# cd /data/docker/ # vi 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
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
生成したDockerイメージの確認
Dockerイメージを一覧表示し、『ranocci/httpd01』という名前のイメージが生成されていることを確認します。
# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ranocci/httpd01 latest bda5163b549b About a minute ago 256.4 MB
Dockerコンテナの起動
生成したDockerイメージからDockerコンテナを起動します。
# docker run -d --privileged --name web01 -i -t -p 80:80 ranocci/httpd01:latest /sbin/init dadb98f537205ba639c4531b2fdb6ea615d377167d52ed7f8b462c6edd79c755
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コンテナの起動は終わりです。
動作テスト
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
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 #
ブラウザでの接続確認
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コンテナを作成し直すことにします。
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
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 /
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
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
ブラウザでの接続確認
Dockerが稼働するサーバとは異なるクライアントPCからI.E.11で接続確認を行います。 ホストOS上に作成したindex.htmlの内容が表示されることが分かります。