今回はボリュームマウントでマウントしたファイルを表示・編集を行ってみたいと思います。
前回の続きとして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
# ⑤コンテナの削除を確認
以上で今回の作業は終了となる。