Docker | 2週間で実務レベルに到達するDocker学習:データ永続化(ボリューム)(Day6)

Docker Docker
スポンサーリンク

Day6:データ永続化(ボリューム)を“本質から理解する”

Day6は Docker 学習の中でも非常に重要なポイントです。
なぜなら、ここで扱う ボリューム(Volume) は、
「コンテナを消してもデータが残る仕組み」
だからです。

アプリケーションはコードだけでは動きません。
データベースのデータ、ログ、アップロードされたファイルなど、
消えてはいけない情報 が必ず存在します。

Docker を本番で使うには、この「永続化」の理解が必須です。


ボリュームとは何か(初心者がまず理解すべき本質)

コンテナの外にある“安全な倉庫”

コンテナは使い捨てです。
削除した瞬間、中のデータはすべて消えます。

しかし、アプリのデータまで消えてしまっては困ります。

そこで Docker は
コンテナの外側にデータを保存する仕組み=ボリューム
を用意しています。

ボリュームは、
コンテナとは独立したデータ置き場
です。

コンテナが壊れても、作り直しても、
ボリュームに保存されたデータは残り続けます。


docker volume create mydata の意味を深掘りする

「mydata」という名前の倉庫を作る

docker volume create mydata

これは
「mydata という名前のデータ倉庫を作る」
という意味です。

この倉庫はコンテナとは別に存在し、
コンテナを削除しても消えません。


ボリュームをコンテナに接続する

例:mydata を /var/lib/mysql に接続する

データベースの例で説明します。

docker run -v mydata:/var/lib/mysql mysql

これは
「mydata という倉庫を、コンテナの /var/lib/mysql に接続する」
という意味です。

MySQL は /var/lib/mysql にデータを保存するため、
コンテナを削除しても mydata にデータが残ります。


ボリュームがなぜ必要なのか(例で理解する)

例:コンテナを削除したらデータが消えるケース

次のように MySQL を起動したとします。

docker run mysql

この状態でデータを入れても、
コンテナを削除した瞬間にすべて消えます。

これは
「コンテナの中にデータを保存している」
からです。

ボリュームを使うとどうなるか

docker run -v mydata:/var/lib/mysql mysql

この状態でデータを入れると、
データは mydata に保存されます。

コンテナを削除しても、
mydata は残り続けます。

新しいコンテナを作って同じボリュームを接続すれば、
データはそのまま使えます。


ボリュームとマウントの違いを明確にする

マウント(Day5)

ホストのフォルダをコンテナに共有する
開発向け
コードの同期に使う
双方向で危険性もある

ボリューム(Day6)

Docker が管理する専用領域
本番向け
データの永続化に使う
安全で高速

ボリュームはホストのフォルダを直接触らせないため、
セキュリティ的にも安定しています。


ボリュームの内部構造を深掘りする

ボリュームはホストのどこに保存されているのか

Docker が自動で管理するため、
通常は意識する必要はありません。

しかし内部的には、
Linux なら /var/lib/docker/volumes/
の中に保存されています。

ただし、
直接触るのは推奨されません。
Docker が管理する領域だからです。


ボリュームのメリットを“実務視点”で理解する

コンテナを壊してもデータが残る

これは本番運用で最も重要です。

アプリの更新や再起動でコンテナを作り直しても、
データはボリュームに残ります。

パフォーマンスが高い

ボリュームは Docker が最適化しているため、
マウントより高速です。

特にデータベースでは
ボリュームを使うのが絶対ルール
と言っていいほどです。

セキュリティが高い

ホストのフォルダを直接触らせないため、
マウントより安全です。


ボリュームを使った“プロの運用例”

MySQL の永続化

docker volume create mysql-data
docker run -v mysql-data:/var/lib/mysql mysql

コンテナを削除しても、
mysql-data にデータが残ります。

PostgreSQL の永続化

docker volume create pgdata
docker run -v pgdata:/var/lib/postgresql/data postgres

同じくデータは残ります。

アップロードファイルの永続化

Webアプリでユーザーがアップロードしたファイルも
ボリュームに保存することで安全に保持できます。


ボリュームの“落とし穴”と対策

ボリュームを削除するとデータも消える

docker volume rm mydata

を実行すると、
mydata のデータは完全に消えます。

対策としては、
バックアップを取る
削除前に確認する
などが必要です。

ボリュームの中身は直接見えない

Docker が管理しているため、
ホスト側から簡単には見えません。

必要なら、
一時的なコンテナを使って中身を確認できます。

docker run -it -v mydata:/data alpine sh

Day6のゴール:「コンテナ削除してもデータ保持」を実現できる

ここまで理解できれば、
Docker を本番で使うための重要な基礎が身につきました。

ボリュームは
データを守るための仕組み
であり、
コンテナの使い捨て文化と矛盾しないように設計されています。

タイトルとURLをコピーしました