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

今回はボリュームマウントでマウントしたファイルを表示・編集を行ってみたいと思います。

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

今回の目的

① HTMLファイルを用意し、ボリュームマウントでApacheコンテナにマウントする。

② ブラウザでコンテナに接続し、マウントしたHTMLファイルを表示する。

③ホスト上でHTMLファイルを編集する。

④再度Apacheコンテナにブラウザで接続し、編集後のHTMLファイルが出力されることを確認する。

ボリュームマウントでApacheコンテナにマウントする

前回まではイメージを使用したコンテナの作成や確認を行いました。しかし、扱うデータの編集は行なっていません。

今回はホスト上のデータをコンテナにマウントし、そのデータを編集するとどのように反映されるか確認してみようと思います。

ボリュームマウントでホスト上のデータをマウントしコンテナを起動する

先ずはコンテナを立ち上げる前に現状の把握から。使用するデータを確認してからApacheコンテナを起動します。

$ ls
index.html

$ cat index.html 
Hello World!

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
# 停止中を含め現状立ち上がっているコンテナはなし

$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
febcb20e8ffc44b37fb2a52919e820dc0093f70e3aa2fe6bec80252c28be36af
# ホスト上のカレントディレクトリをマウントしコンテナを起動

$ docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
febcb20e8ffc        httpd:2.4           "httpd-foreground"   7 minutes ago       Up 7 minutes        0.0.0.0:8080->80/tcp   my-apache-app
# コンテナの起動を確認

コンテナの起動を確認したらブラウザで「http://localhost:8080/」にアクセスし作成したindex.htmlファイルが表示されていることを確認しましょう。(今回の場合、「Hello World!」と表示されているはず)

ブラウザでの表示を確認したら次はホスト上(コンテナ内ではない)で対象のHTMLファイルを編集します。(vi等テキストエディタで)

$ ls
index.html

$ cat index.html 
Hello Edited World!
# 編集後のHTMLファイル

編集が終わったら「http://localhost:8080/」でアクセス中のブラウザを更新し編集後のindex.htmlファイルが表示されていることを確認しましょう。(今回の場合、「Hello Edited World!」と表示されているはず)

今回の確認内容は以上です。後片付けに入りましょう。

後片付け

確認が終わったらコンテナを停止し削除しましょう。

$ docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
febcb20e8ffc        httpd:2.4           "httpd-foreground"   2 hours ago         Up 2 hours          0.0.0.0:8080->80/tcp   my-apache-app
# ①起動中のコンテナの確認

$ docker stop febcb20e8ffc
febcb20e8ffc
# ②対象コンテナの停止(CONTAINER IDで指定)

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                      PORTS               NAMES
febcb20e8ffc        httpd:2.4           "httpd-foreground"   3 hours ago         Exited (0) 13 seconds ago                       my-apache-app
# ③コンテナの停止を確認

$ docker rm febcb20e8ffc
febcb20e8ffc
# ④対象コンテナの削除(CONTAINER IDで指定)

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
# ⑤コンテナの削除を確認

以上で今回の作業は終了となる。

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