I'm a cloud engineer at foot of the small mountain

クラウド・ETL/ELT・Nocode・BigQuery などを中心に書ければね。最近触ったサービス・フレームワークなどのメモ

Docker バインドマウントしてデータを永続化してみる

前回はApache コンテナを起動してみました。

miyamon44.hatenablog.jp

このままだと一度コンテナを削除するとファイルや設定情報などは消えてしまいますので、バインドマウントをしてデータ保存先を Docker から分離してみたいと思います。

バインドマウントしてみる

最初に対象のディレクトリを作成してみます。

[root@ec2-user]# mkdir bindData
[root@ec2-user]# ll
total 0
drwxr-xr-x 2 root root 6 Jan  9 21:01 bindData
[root@bindData]# pwd
/home/ec2-user/bindData

作成した以下ディレクトリをバインド先にします。
/home/ec2-user/bindData

ではコンテナを起動してみようと思いますが、その前に前回作成したコンテナが残ってたので削除しちゃいます。

[root@bindData]# docker stop webapp1
webapp1
[root@bindData]# docker rm  webapp1
webapp1
[root@bindData]#

これできれいになったのでコンテナを起動してみますが、その際に赤字部分にマウントするパスをセットしてあげます。
docker run -dit --name webapp1 -p 8080:80 -v /home/ec2-user/bindData:/usr/local/apache2/htdocs/ httpd:2.4

[root@bindData]# docker run -dit --name webapp1 -p 8080:80 -v /home/ec2-user/bindData:/usr/local/apache2/htdocs/ httpd:2.4
1e6796d3fd27a9d0a630d7c6809d53aa86eb723345e7da93300363445f295bdd
[root@bindData]#
[root@bindData]# docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                  NAMES
1e6796d3fd27        httpd:2.4           "httpd-foreground"   5 seconds ago       Up 4 seconds        0.0.0.0:8080->80/tcp   webapp1
[root@bindData]#

コンテナは起動されましたので、URL:ポートでアクセスしてみます。
f:id:sennanvolar44:20210110064315p:plain
何もないのでこうなりますよね。ではindex.html を置いてみます。

[root@bindData]# ll
total 4
-rw-r--r-- 1 root root 154 Jan  9 21:49 index.html
[root@bindData]# cat index.html
<html>
  <head>
    <meta http-equiv="content-type" charset="utf-8">
  </head>
  <body>
    <div>Docker バインドマウント</div>
  </body>
</html>

[root@bindData]#  

再度ブラウザをリロードしてみると表示されました。
f:id:sennanvolar44:20210110065102p:plain

コンテナを新たに作成

今起動しているコンテナを停止、削除後、再度Apacheコンテナを起動します。(今回はwebapp2という名前にしてみました)

[root@bindData]# docker stop webapp1
webapp1
[root@bindData]# docker rm webapp1
webapp1
[root@bindData]#  
[root@bindData]# docker run -dit --name webapp2 -p 8080:80 -v /home/ec2-user/bindData:/usr/local/apache2/htdocs/ httpd:2.4
d256c64c0371a6e961ee66b6fc1e84f85fa9810ba165e23df91e3f0e739fbf41
[root@bindData]#

新たに作成したコンテナでも index.html ちゃんと表示されました。 f:id:sennanvolar44:20210110070557p:plain

おわり。