【Docker基礎】ボリュームとマウント

 Docker のコンテナは「作っては壊す」というスタイルが基本です。試しに Apache のコンテナを起動して、ファイルをコピーする操作などをしてきましたが、コンテナの内部だけにデータを保存していると、コンテナ削除時にそれらが消えてしまうリスクがあります。
 ここで登場するのが「ボリューム」と「マウント」という概念です。これらを使うことで、コンテナが外部のストレージ領域にデータを置き、コンテナが消えてもデータを保持できるようになります。

ボリュームとは?

  • ストレージの一部を切り分けて使う仕組み。
  • ハードディスクや SSD の一領域(イメージとしては“ナイフで切り分けた一部”)
  • ここにデータを置き、コンテナが何度作り直されてもデータを守ることができる。

マウントとは?

  • 「取り付ける」 という意味で、コンテナと外部ストレージを接続して、OSやソフトウェアから使えるようにすること。
  • 実生活で言えば、USBメモリをPCに差し込むイメージ
  • マウントしていない状態だと、コンテナ内でしかデータを扱えないが、マウントすればホストや外部にあるストレージをコンテナから参照できる。

マウントの目的

  1. データの永続化
    ・コンテナを壊してもデータは消えず、再度コンテナを立ち上げても同じデータが使える。
  2. コンテナ間やホストとのファイル共有
    ・開発環境でホスト側のコードを即時反映させたい、などの用途

コンテナと外部ストレージの関係

コンテナはいつか壊れる(作り直す)もの。
 もしコンテナの中だけに大切なデータを保管していたら、アップデートや削除のタイミングでデータごと消えてしまうことになる。
そのため、最初からコンテナとは別の場所(ボリュームなど)にデータを置く発想が重要となる。

データの永続性

  • 永続性(Persistence): コンテナが終了や削除されても、データが残り続けること。
  • ボリュームを使えば、Docker が管理する領域やホストディレクトリに置かれたデータはコンテナのライフサイクルとは分離され、長期保管が可能となる。

まとめ

  1. ボリューム
    ・Docker で用意されるストレージ領域
    ・コンテナを何度作り直してもデータが消えない。
  2. マウント
    ・コンテナが外部のストレージ(ボリュームやホストディレクトリ)にアクセスできるように接続すること
  3. データ永続化の考え方
    ・コンテナ内部にデータを閉じ込めず、最初から外部をマウントして使うのが基本
    ・WordPress などのアプリでは必須の手法

 次のコンテンツでは、このマウントの具体的な種類について、バインドマウントボリュームマウントに分けて解説していきます。両者の使い分けを理解することで、Docker のデータ管理がぐっと楽になります。