#はじめに
Dockerにてマウントする方法にバインドマウントとボリュームマウントがあるかと思います。
バインドマウントはマスター環境で作成したディレクトリにデータを直接放り込む事でコンテナに直接反映されますが、ボリュームマウントはDockerEngine上にボリュームをマウントするのでボリュームの中身を確認しづらいかと思います。
力技?でボリュームマウントで作成したボリュームの中身を確認する方法を試してみたのですが、忘れてしまいそうなので備忘録として残しておきます。
これを書いている現在、Dockerを学び始めて1ヵ月程度&エンジニアですらないので、「そんなのなんちゃってな確認方法だ」「ただの2重チェックに過ぎない」と思われるかもですが、温かくご指摘頂けると嬉しいです。
私自身インフラ的知識もプログラミングスキルも初心者ですので、初心者にも解りやすい内容になっていればい良いなと思います。
#環境
・Windows10 Home(64bit)
・DockerDesktop for Windows(WSL2)
#図解
ボリュームをマウントしたapacheコンテナを起動し、そこにhtmlファイルを作成するという体で進めていきます。
ボリュームマウントでマウントされたボリュームの中身を確認するために確認用のLinuxコンテナ別途起動し、ボリュームに接続して確認をしてみます。
#①ボリュームを作成
$ docker volume create hoge_volume
#②ボリュームがマウントされたApacheコンテナを起動する
$ docker run --name hoge_apache -d -p 8080:80 -v hoge_volume:/usr/local/apache2/htdocs httpd
公式で用意されているApacheイメージを使用します。
これでボリュームがマウントされたApacheコンテナが立ち上がりました。
ちゃんと起動できているか確認してみます。
ブラウザにhttp://localhost:8080/
と入力。ちゃんと起動できている事が確認できました。
#③同じボリュームがマウントされたlinux(ubuntu)コンテナを起動する
$ docker run --name hoge_ubuntu -dit -v hoge_volume:/home ubuntu
apacheコンテナと同じボリュームにマウントされたlinuxコンテナが立ち上がりました。
#④ボリューム内のhtmlファイルを更新してみる
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h1>更新したよ</h1>
</body>
</html>
ボリューム内のhtmlファイルを上記に変更します。
今回はマスター(windows)のドキュメント下に「hoge_directory」フォルダを作成し、更新用htmlファイルを作成しました。
これをcpコマンドでボリュームに移します。
$ docker cp C:\Users\[ユーザー名]\Documents\hoge_directory\index.html hoge_apache:/usr/local/apache2/htdocs/
#⑤ボリューム内がちゃんと更新されているか確認してみる
cpコマンドで更新したので、Apacheコンテナのhtdocs下を調べるともちろん更新されていますが、ちゃんとボリューム内が更新されているのかLinuxコンテナから確認してみます。
Linuxコンテナでは/home
ディレクトリにボリュームをマウントしているので、ここがちゃんと更新されていたら正常にボリューム内が更新されたという事になりますよね。
$ docker exec -it hoge_ubuntu /bin/sh
上記コマンドでLinuxコンテナ内に入ります。
/home
ディレクトリを確認してみます。
ちゃんと更新されてました!
root権限で確認したり、ボリューム内を確認する専用のイメージを使う方法等やり方は沢山あるみたいですが、自分の様な初心者ならこの方法のほうが理解しながら進められるような気がしました。