[docker] ボリュームマウントとバインドマウントの違い

スポンサーリンク

概要

dockerではコンテナを削除するとデータが消えてしまうが、データを永続化することでコンテナが削除されてもデータを残すことができる。

データの永続化にはボリュームマウントとバインドマウントがあり、データが保存される場所が異なる。
公式では、データの移行やバックアップが容易なボリュームマウントが推奨されている。
ただし、開発環境ではファイルの変更をリアルタイムで反映できるバインドマウントを使うのが一般的である。

ボリュームマウント

ボリュームマウントとは

  • Dockerが管理する記憶領域にデータが保存される。
  • データ変更はコンテナを通して行う必要があるため、直接編集しないデータに向いている。
  • docker compose downでは削除されない(-vオプションで削除される)
  • compose.yamlの大項目volumesにボリューム名を記述する。
  • compose.yamlのservicesの中のvolumesでボリュームを利用する。

Docker Composeのファイル名は以前はdocker-compose.yamlであったが、現在はcompose.yamlが推奨されている

compose.yamlのサンプル(mariaDBの場合)

services:
  db:
    image: mariadb:10.7
    volumes:
      - db-data:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: hoge
      MARIADB_USER: taro
      MARIADB_PASSWORD: taro123
      MARIADB_DATABASE: sample
      TZ: Asia/Tokyo
volumes:
  db-data:

バインドマウント

バインドマウントとは

  • ホストOSのディレクトリ・ファイルにデータが保存される。
  • ホストのファイルを更新するとコンテナ内にも反映されるので、データ編集が容易。
  • compose.yamlのservicesの中のvolumesにホストのパスを指定する。

compose.yamlのサンプル(mariaDBの場合)

services:
  db:
    image: mariadb:10.7
    volumes:
      - ./db-data:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: hoge
      MARIADB_USER: taro
      MARIADB_PASSWORD: taro123
      MARIADB_DATABASE: sample
      TZ: Asia/Tokyo

おすすめ書籍

コメント