🕌

dockerのボリュームマウントがどこに保存されるのか調べてみた

2023/01/15に公開

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に保存されるようです。
https://matsuand.github.io/docs.docker.jp.onthefly/storage/volumes/#create-and-manage-volumes

確かめてみましょう!

上記のようにrootユーザーでログインし
var/lib/docker/volumes配下を確かめると
publicフォルダーが作成されておりその配下の_dataフォルダー配下に
実際のデータが作成されていることが分かりました!

Discussion