今回は前回の続きとしてTHMLファイルとDockerfileを用意してApacheのコンテナイメージをビルドしてみます。
今回の目的
① Apacheコンテナに作成したHTMLファイルを表示させる。
② Dockerイメージを作成する。
③ 作成したDockerイメージからコンテナを作成し、コンテナのHTMLファイルへアクセスする。
前回の続き
前回はDockerでApacheコンテナの起動・停止・削除を行いました。
今回はApacheコンテナへ通信した際にHTMLファイルを表示させてみようと思います。
HTMLファイルとDockerfileを用意する
例によって下記のDocker Hubに倣って進めていきます。
先ずは同じフォルダ(あるいはディレクトリ)にHTMLファイルとDockerfileを用意します。
Docker Hubを参考に下記のように作成しました。
$ ls
Dockerfile index.html
$ cat Dockerfile
FROM httpd:2.4
COPY ./index.html/ /usr/local/apache2/htdocs/
$ cat index.html
Hello World!
index.htmlファイルでは「Hello World!」と表示するよう記載しています。
Dockerfileではhttpd:2.4のイメージをベースに上記index.htmlをコンテナ内のhtdocs配下にコピーしています。
Dockerイメージをビルドする
さらに上記Dockerfileとindex.htmlが存在する場所をカレントディレクトリとしてdocker buildコマンドを打ちます。
Dockerイメージのビルド前に先ずは現状の把握から行います。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd 2.4 98f93cd0ec3b 9 days ago 144MB
# 現状、httpd:2.4のイメージのみ存在している
Docker Hubを参考に下記のように作成しました。
$ ls
Dockerfile index.html
# カレントディレクトリ配下のファイル
$ docker build -t my-apache2 .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM httpd:2.4
---> 98f93cd0ec3b
Step 2/2 : COPY ./index.html/ /usr/local/apache2/htdocs/
---> c82285e7123a
Successfully built c82285e7123a
Successfully tagged my-apache2:latest
# Dockerビルド実行
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my-apache2 latest 7a11d41d9782 48 seconds ago 144MB
httpd 2.4 98f93cd0ec3b 9 days ago 144MB
# ビルド後のDockerイメージを確認
「docker build -t my-apache2 .」コマンドを実行することで作成したイメージが追加されていることが確認できました。(docker buildコマンド実行時には最後のピリオド部分を入れ忘れないように注意)
コンテナを立ち上げてブラウザでアクセスする
作成したDockerイメージからコンテナを立ち上げてみましょう。
先ずはコンテナを立ち上げる前に現状の把握から。
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
my-apache2 latest 7a11d41d9782 48 seconds ago 144MB
httpd 2.4 98f93cd0ec3b 9 days ago 144MB
# 今回使用するイメージはmy-apache2の方
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 停止中を含め現状立ち上がっているコンテナはなし
次にdocker runコマンドを実行しコンテナを起動します。
例によってコンテナを立ち上げる前に現状把握から。
$ docker run -dit --name my-running-app -p 8080:80 my-apache2
6701668339afab28f4560bf43ae7301d330c9b46e8dfad80b721a91aca37bdb8
# my-apache2イメージを使用しコンテナを起動
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6701668339af my-apache2 "httpd-foreground" 9 seconds ago Up 8 seconds 0.0.0.0:8080->80/tcp my-running-app
# コンテナの起動を確認
コンテナの起動を確認したらブラウザで「http://localhost:8080/」にアクセスし作成したindex.htmlファイルが表示されていることを確認しましょう。(今回の場合、「Hello World!」と表示されているはず)
後片付け
ブラウザで作成したHTMLファイルへのアクセスができたら今回の動作確認は終了となります。
最後に作成したコンテナの後片付けをしよう。
$ docker stop 6701668339af
6701668339af
# コンテナの停止(コンテナIDで指定)
# コンテナの停止後、ブラウザで「http://localhost:8080/」にアクセスできないことを確認しておこう
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6701668339af my-apache2 "httpd-foreground" 12 minutes ago Exited (0) 2 minutes ago my-running-app
# STATUSよりコンテナの停止を確認
$ docker rm 6701668339af
6701668339af
# コンテナの削除(コンテナIDで指定)
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# コンテナが削除されたことを確認
今回作成したDockerイメージは次回も使用する予定なので今回は削除はしないようにしておきます。(イメージが不要であれば「docker rmi」コマンドで削除する)