Dockerボリューム管理
Dockerボリュームをマスター:名前付きボリューム、バインドマウント、tmpfsマウント、ボリュームドライバー。各タイプの使い分けと永続データの管理方法を学びます。
Volumes
詳細な説明
Dockerストレージのタイプ
Dockerはデータの永続化と共有のために3種類のマウントを提供します。
名前付きボリューム(推奨)
Dockerがストレージの場所を管理。データベースや永続的なアプリケーションデータに最適:
# 名前付きボリュームを作成
docker volume create db-data
# コンテナで使用
docker run -d -v db-data:/var/lib/postgresql/data postgres:16
# ボリュームを調査
docker volume inspect db-data
バインドマウント
特定のホストパスをコンテナパスにマッピング。開発(ライブコードリロード)に最適:
# カレントディレクトリをマウント
docker run -d -v $(pwd)/src:/app/src my-app
# 読み取り専用マウント
docker run -d -v $(pwd)/config:/app/config:ro my-app
tmpfsマウント
ディスクに書き込まれないインメモリストレージ。機密データ用:
docker run -d --tmpfs /run --tmpfs /tmp my-app
# サイズ制限付き:
docker run -d --mount type=tmpfs,destination=/secrets,tmpfs-size=64m my-app
ボリューム管理コマンド
# すべてのボリュームを一覧表示
docker volume ls
# ダングリング(未使用)ボリュームを一覧表示
docker volume ls --filter dangling=true
# 特定のボリュームを削除
docker volume rm db-data
# 未使用のボリュームをすべて削除
docker volume prune
# ボリュームをtarにバックアップ
docker run --rm -v db-data:/data -v $(pwd):/backup busybox tar czf /backup/db-data.tar.gz /data
# tarからボリュームを復元
docker run --rm -v db-data:/data -v $(pwd):/backup busybox tar xzf /backup/db-data.tar.gz -C /
Docker Composeでの使用
services:
db:
image: postgres:16
volumes:
- db-data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
volumes:
db-data:
ユースケース
コンテナ再起動をまたいだデータベースデータの永続化、コンテナ間での設定ファイルの共有、ホットリロード開発環境でのソースコードマウント、コンテナデータのバックアップ。