⚔️
【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
結局どっち使えばいいの?
迷ったら ボリューム
公式でもボリュームの使用が推奨されている。
データを直接変更するする必要がある場合のみ、バインドマウントを選択するのがよい。
Discussion