DockerのNamed Volume入門:データ永続化の基本を理解する

はじめに

Dockerコンテナは基本的にステートレス(状態を持たない)設計です。
そのため、コンテナを削除すると中のデータも同時に消えてしまいます。
しかし、実際の開発や運用では、データを永続化(persistent)**したいケースが多く存在します。
ここで登場するのが「Named Volume(名前付きボリューム)」です。

この記事では、Named Volumeの基本から、実際のハンズオンを通じてその使い方を理解します。


Named Volumeとは?

Named Volumeは、Dockerが管理する永続的なデータ領域で、名前で識別されます。
特徴として以下の点が挙げられます。

  • コンテナとは独立してデータが保持される
  • Dockerが管理する場所(通常 /var/lib/docker/volumes/)に保存される
  • 複数のコンテナ間で共有が可能
  • docker-compose.ymlでも簡単に定義可能

匿名ボリュームとの違い

種類定義方法再利用管理のしやすさ
匿名ボリューム-v /data不可難しい
名前付きボリューム-v mydata:/data可能容易

ハンズオン:Named Volumeを実際に使ってみよう

ここでは、nginxを使ったシンプルなハンズオンを通じてNamed Volumeの使い方を理解します。

1. Named Volumeの作成

まず、Docker CLIからNamed Volumeを作成してみましょう。

docker volume create mydata

作成を確認:

docker volume ls

出力例:

DRIVER    VOLUME NAME
local     mydata

2. Volumeをコンテナにマウント

次に、このボリュームをNginxコンテナにマウントします。

docker run -d --name web -v mydata:/usr/share/nginx/html -p 8080:80 nginx

このコマンドで、

  • mydataボリュームが /usr/share/nginx/html にマウントされ、
  • Nginxがそのディレクトリをルートとして使用します。

3. コンテンツをボリュームに配置

ボリュームにHTMLを配置してみましょう。

docker exec -it web bash
echo "Hello from Named Volume!" > /usr/share/nginx/html/index.html
exit

ブラウザで
👉 http://localhost:8080
にアクセスすると、以下のメッセージが表示されます。

Hello from Named Volume!

4. コンテナを削除してもデータは残る

試しにコンテナを削除してみます。

docker rm -f web

再度、同じボリュームを使ってコンテナを起動:

docker run -d --name web2 -v mydata:/usr/share/nginx/html -p 8080:80 nginx

ブラウザで再アクセスすると、先ほどのindex.htmlがそのまま残っていることが確認できます。

これがNamed Volumeによる永続化の基本です。


ボリュームの管理コマンドまとめ

コマンド内容
docker volume create <name>新規ボリューム作成
docker volume lsボリューム一覧
docker volume inspect <name>詳細情報確認
docker volume rm <name>ボリューム削除
docker volume prune未使用ボリュームの削除

docker-composeでのNamed Volume定義

複数コンテナを扱う場合は、docker-compose.ymlに定義するのが便利です。

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - mydata:/usr/share/nginx/html

volumes:
  mydata:

起動コマンド:

docker compose up -d

この定義により、mydataという名前のボリュームが自動的に作成・マウントされます。


トラブルシューティング:ボリュームの内容を確認する

Named Volumeはホスト上では /var/lib/docker/volumes/<name>/_data に保存されます。

内容を確認するには以下のようにします:

sudo ls /var/lib/docker/volumes/mydata/_data

※Root権限が必要です。


まとめ

  • Named Volumeはデータ永続化の基本的な仕組み
  • コンテナを削除してもデータは保持される
  • Docker Composeで容易に再利用できる
  • チーム開発や本番運用環境では必須の概念

次のステップ

  • Bind Mountとの違いを学ぶ
  • Volume Driver(例:NFS、S3互換ストレージ)を利用してリモート永続化
  • CI/CD環境でボリュームを使ったテストデータ管理を実践

投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です