前書き
Docker ComposeのVolume定義について理解した内容を、備忘録としてまとめる。
公式ドキュメントを読むだけでは分かりにくい「volumesセクションの役割」や「サービス側との関連」について、実際に検証して得た知見を整理した。
注意
本記事では、Docker Composeファイルの一番下に記載する「volumes」セクションについて解説する。
Docker ComposeのVolumesの概要
- コンテナが削除されてもデータを保持するための仕組み
- コンテナ内で作られたファイルは通常コンテナと一緒に消えるが、
volumesを使うことでホスト側や専用のストレージに保存し続けられる -
volumesがあることで、アプリのログ・DBデータなどの依存ファイルを永続化できる
Volumesの書き方
| メソッド | 説明 |
|---|---|
volumes: |
Docker Compose で使うボリューム(データを保存する場所)を定義するセクション。ここに書いた内容は、後でサービス側から参照できる |
test_volume: |
作成するボリュームの名前。この例では「test_volume」という名前のボリュームを作る |
永続ボリューム
volumes:
test_volume: {}
永続ボリュームで使用したメソッドと説明
| メソッド | 説明 |
|---|---|
| {} | 特に設定を書かない「空の定義」。何も指定しなくても、Docker が自動的に ローカルドライバ(自分のPCのディスク上にデータを保存する仕組み)を使ってボリュームを作る |
一時ボリューム
volumes:
test_volume:
driver: local
driver_opts:
type: tmpfs
device: tmpfs
一時ボリュームで使用したメソッドと説明
| メソッド | 説明 |
|---|---|
driver: |
ボリュームをどの仕組み(ドライバ)で作るかを指定する。 local は Docker 標準のローカルドライバ(ホストマシン上にデータを保存する仕組み) を意味する |
driver_opts: |
driver に追加設定(オプション)を渡すための項目。ここで指定した内容により、ボリュームの動作や保存場所を細かく制御できる |
type: tmpfs |
ボリュームの種類を指定する。tmpfs は メモリ(RAM)上に一時的なファイルシステムを作る仕組み を意味する。つまり、ディスクではなくメモリ上にデータを保存する |
device: tmpfs |
使用するデバイスを指定する。tmpfs とすることで「このボリュームは tmpfs(=メモリ上の仮想ストレージ)を使う」という指定になる。 |
永続ボリュームと一時ボリュームの違い
永続ボリューム と 一時ボリューム の違いは、データの保存場所 と データの寿命 にある
| 項目 | 永続ボリューム | 一時ボリューム(tmpfs) |
|---|---|---|
| 保存場所 | ホストマシンのディスク上 | メモリ(RAM)上 |
| 永続性 | コンテナを削除しても残る | コンテナ停止・削除で消える |
| データの保持期間 | 手動で削除するまで保持 ( docker volume rm が必要) |
一時的(再起動でリセット) |
| 速度 | 通常 | 高速(RAMアクセス) |
| ディスク容量の消費 | あり | なし(RAMを使用) |
| 主な用途 | データベースやログ、Gemなどの永続キャッシュ | テスト、開発時の一時キャッシュ、高速化用途 |
用語説明
RAM
- パソコンが作業するときに使う一時的な作業台のようなもの
- 動かしているアプリやデータを、すぐに取り出せる場所に置いておくための領域
ディスク(SSD / HDD)とは
- ディスクは、データを長く保管しておくための倉庫のようなもの
- 写真、プログラム、ドキュメントなど、消えずに保存したいものを入れておく場所
RAMとディスクの比較表
| 項目 | RAM(メモリ) | ディスク(SSD / HDD) |
|---|---|---|
| 役割 | CPUが直接アクセスして処理中のデータやプログラムを一時的に保持する領域 | データやプログラムを長期間保持するための永続ストレージ |
| 性質 | 揮発性 (電源を切ると内容が失われる) |
不揮発性 (電源を切っても内容が保持される) |
| アクセス速度 | 非常に高速 (ナノ秒〜マイクロ秒単位) |
低速 (ミリ秒単位) |
| 容量 | 比較的小さい (数GB〜数十GB) |
大容量 (数百GB〜数TB) |
| 主な用途 | 実行中プロセスのワーキングメモリ、キャッシュ、バッファ | OS、アプリケーション、データファイル、ログの保存 |
| 物理的構造 | 半導体メモリ (DRAMなど) |
フラッシュメモリ(SSD)または磁気ディスク(HDD) |
| 例え | 作業中の机の上 (すぐ使う資料を広げておく場所) |
書庫や本棚 (長期間保管しておく場所) |
参考記事
公式
非公式
感想
今回は、Docker ComposeのVolume設定について自分なりに整理してまとめました。毎回「これ何の設定だっけ?」と迷うことが多かったので、改めて調べ直して理解を深めました。今後は、用途に応じて永続ボリュームと一時ボリュームをうまく使い分けていこうと思います。