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:

ユースケース

コンテナ再起動をまたいだデータベースデータの永続化、コンテナ間での設定ファイルの共有、ホットリロード開発環境でのソースコードマウント、コンテナデータのバックアップ。

試してみる — Docker CLI Reference

フルツールを開く