🕌
dockerのボリュームマウントがどこに保存されるのか調べてみた
volumeとは
ボリュームはdockerでデータを永続化するためにホストコンテナに保存先を作り
そこをvolumeマウントで紐付けることでdockerでファイルを永続的に保存できるようになります。
今回はホストマシンのどの領域に実際に保存されているのかを調べてみました。
今回検証するdockerfileとvolumeについて
version "2.4"
services:
app:
build:
context: .
dockerfile: Dockerfile
depend_on:
db:
condition: service_healthy
volumes:
- public:/public
db:
image: mysql:5.7
healthcheck:
test: mysqlshow -u $$MYSQL_USER -p $$MYSQL_PASSWORD
interval: 3s
retries: 10
environment:
MYSQL_DATABASE: test
MYSQL_USER: test_user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root_password
volume:
public:
driver: local
このファイルの中で下にあるvolumeでpublic(名前付きボリューム)をローカルのデータ保存領域に作成しています( driver: local)。そしてこのpublicの領域とappサービスのpublicの領域をvolume mount
しhostマシーンの領域に紐付けることでデータを永続化することができます。(参考: https://matsuand.github.io/docs.docker.jp.onthefly/storage/volumes/)
では実際にpublic-testはホストマシーンのどこに領域が作成されているのかをみていきます。
volumeはホストマシーンのどこに保存されている(ホストマシーン: EC2)??
公式ドキュメントによると
var/lib/docker/volumesに保存されるようです。
確かめてみましょう!
上記のようにrootユーザーでログインし
var/lib/docker/volumes配下を確かめると
publicフォルダーが作成されておりその配下の_dataフォルダー配下に
実際のデータが作成されていることが分かりました!
Discussion