【Docker】DockerでApacheコンテナを動かしてみる②

今回は前回の続きとしてTHMLファイルとDockerfileを用意してApacheのコンテナイメージをビルドしてみます。

今回の目的

① Apacheコンテナに作成したHTMLファイルを表示させる。

② Dockerイメージを作成する。

③ 作成したDockerイメージからコンテナを作成し、コンテナのHTMLファイルへアクセスする。

前回の続き

前回はDockerでApacheコンテナの起動・停止・削除を行いました。

今回はApacheコンテナへ通信した際にHTMLファイルを表示させてみようと思います。

HTMLファイルとDockerfileを用意する

例によって下記のDocker Hubに倣って進めていきます。

Docker

先ずは同じフォルダ(あるいはディレクトリ)に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」コマンドで削除する)

タイトルとURLをコピーしました