⚔️

【Docker】ボリューム vs バインドマウント

に公開

コンテナでデータを永続化したい

コンテナを削除すると、基本的にはコンテナ内のデータも削除される。
データを残したい場合は、以下のいずれかの方法を選択する。

  • ボリューム
  • バインドマウント

1. ボリューム

Docker が管理する記憶領域にデータを永続化する仕組み

  • バインドマウントよりデータの移行やバックアップが容易
  • データを変更する際は、コンテナを通して行う
  • 直接変更することがないデータに向いている
    • ex. データベースのデータ

compose.yaml の書き方

compose.yaml
services:
  <container_name>:
    image: <image_name>
    volumes:
      - <volume_name>:path/to/container_dir

volumes: <volume_name>

2. バインドマウント

ホスト OS のディレクトリやファイルをマウントする仕組み

  • データを変更する際は、ホストのファイルを直接変更する
  • 変更の頻度が高いデータに向いている
    • ex. 開発中のプログラムのソースファイル

compose.yaml の書き方

compose.yaml
services:
  <container_name>:
    image: <image_name>
    volumes:
      - path/to/host_dir:path/to/container_dir

結局どっち使えばいいの?

迷ったら ボリューム

公式でもボリュームの使用が推奨されている。

https://matsuand.github.io/docs.docker.jp.onthefly/storage/volumes/

データを直接変更するする必要がある場合のみ、バインドマウントを選択するのがよい。

Discussion