🐳
【Docker基本】Dockerボリューム技術の理解と実践
Dockerでは、データの永続化とコンテナ間のデータ共有を実現するために「ボリューム(Volume)」という仕組みが用意されています。本記事では、Dockerボリュームの基本から、実践的な使い方、他の方式との違いまでを丁寧に解説します。
📌 1. Dockerボリュームとは?
Dockerボリュームとは、コンテナのライフサイクルとは独立した永続的なデータ保存領域のことです。通常、ホストマシンの特定ディレクトリにデータが保存され、コンテナが停止・削除されてもデータが消えない仕組みです。
🔍 2. ボリュームの特徴
特徴 | 説明 |
---|---|
永続性 | コンテナを削除してもデータは保持される |
データ共有 | 複数のコンテナで同じボリュームを共有できる |
バックアップが容易 | ボリューム単位でバックアップ・リストア可能 |
パフォーマンスに優れる | バインドマウントよりも高速で安全 |
CLIで簡単操作 |
docker volume コマンドで管理が容易 |
⚙️ 3. ボリュームの基本操作
✅ ボリュームの作成
docker volume create my_volume
✅ ボリュームの一覧表示
docker volume ls
✅ コンテナにマウントして使用
docker run -d -v my_volume:/app/data --name my_container ubuntu
この例では、ホスト側の my_volume
をコンテナの /app/data
にマウントしています。
🗂️ 4. ボリュームの保存場所
Linux環境の場合、Dockerボリュームは以下のような場所に保存されます:
/var/lib/docker/volumes/<ボリューム名>/_data
ただし、直接操作するのではなく、CLIから管理することが推奨されています。
🔄 5. バインドマウントとの違い
比較項目 | ボリューム (Volume) | バインドマウント (Bind Mount) |
---|---|---|
管理主体 | Dockerが内部で管理 | ユーザーが明示的にパスを指定 |
パスの指定 | 自動的に決まる | 任意のホストパスを使用 |
可搬性 | 高い(環境間で再利用しやすい) | 低い(ホスト依存) |
セキュリティ | 高い(Dockerが管理) | 権限管理の考慮が必要 |
用途例 | データベース、キャッシュなど | 開発中のコード同期など |
🧪 6. 実践例:MySQLとボリュームの連携
docker run -d \
--name mysql_container \
-e MYSQL_ROOT_PASSWORD=my-secret-pw \
-v mysql_data:/var/lib/mysql \
mysql:8
この例では、mysql_data
というボリュームにMySQLのデータを保存することで、コンテナを削除してもデータが残るようになります。
🧼 7. 不要なボリュームのクリーンアップ
✅ 使われていないボリュームを一括削除
docker volume prune
✅ 特定のボリュームを削除
docker volume rm my_volume
✅ まとめ
ポイント | 内容 |
---|---|
ボリュームは永続的なデータ保存手段 | コンテナ削除後もデータが保持される |
複数のコンテナで共有可能 | 同じボリュームを読み書きできる |
バックアップ・復元がしやすい | CLIから管理可能 |
バインドマウントより安定性と可搬性が高い |
Discussion