【Docker基礎】記憶領域のマウントの種類

 Docker を使ってコンテナを運用する際、どこにデータを保存しておくかは重要なテーマです。コンテナが壊れたり再作成されてもデータを残したい、あるいはコンテナの外部で自由にファイルを編集したい。そんなニーズに対応するために、ボリュームマウントバインドマウントという2種類のマウント方法が用意されています。
ここでは、それぞれのマウント方式がどんな特徴を持ち、どう使い分ければいいのかを解説します。

ボリュームマウントとは?

  • Docker Engine が管理する“ボリューム” をコンテナにマウント
  • ボリュームは 名前 だけで管理でき、OS に依存しない。
  • Docker コンテナからデータを書き込むことは容易だが、ホスト側からは直接触りにくい
  • 複雑な手順なく編集できない 代わりに、誤操作や環境差異の影響を受けにくい。

ボリュームマウントのメリット

  1. 環境に依存しない
    ・Windows でも Mac でも Linux でも、Docker が抽象化して管理
  2. 誤って削除しにくい
    ・ホストのディレクトリをいじらずに済むので、安全性が高い。
  3. Docker 社の推奨方式
    ・手軽かつ OS 差異を気にせず使える。

ボリュームマウントのデメリット

  • ホスト側からファイルを直接編集しづらい
    ・WordPress のテーマ編集など、頻繁にファイルをいじりたいケースには不向き
  • バックアップが複雑
    ・ボリュームの内容をコピー・移行するときにやや特殊な手順が必要

バインドマウントとは?

  • Docker Engine の管理下ではないホスト上のフォルダやファイル をコンテナにマウント
  • 既存フォルダ・ファイルをそのままコンテナ内に見せる
  • ホストのディレクトリを自由に操作できるので、エディタで直接編集するのが簡単

バインドマウントのメリット

  1. 普通のファイル扱い
    ・例えば C:\Users\Document/Users/<name>/Documents にあるファイルを直接編集可
  2. 頻繁に触るデータに最適
    ・WordPress のテーマやソースコードなど、編集が多いファイルを置くのに便利

バインドマウントのデメリット

  • 環境依存が生じやすい
    ・Windows / Mac / Linux でパス記法が違う。
    ・チームメンバー間での使いまわしに注意
  • 誤って削除しやすい
    ・ホスト上でいつものフォルダ扱いになるので、気づかず消してしまう可能性あり

ボリュームマウントとバインドマウントの違い

項目ボリュームマウントバインドマウント
記憶領域ボリューム(Docker管理下)ディレクトリやファイル(ホスト任意)
マウント場所Docker Engine 管理下の専用領域どこのフォルダ/ファイルでも可能
マウント時の動作ボリュームを作成 → マウント既存のディレクトリ/ファイルをマウント
内容の編集コンテナを経由する形が基本普通のファイル として自由に扱える
バックアップ手順がやや複雑普通のファイルコピーで済む
OS依存ほぼなし(抽象化される)あり(Windows, Mac, Linux でパスが異なる)

tmpfs マウント(おまけ)

  • メモリ上にマウントする特別な方式
  • ディスクより高速だが、ホスト再起動やコンテナ停止で消える
  • キャッシュや一時ファイルなどの短命データ向け

まとめ

  • ボリュームマウント → Docker がまとめて管理する領域を割り当てる。
    ・環境差異に左右されにくく、誤って削除しにくい。
    ・ただしホストからは直接編集しづらい。
  • バインドマウント → ホストの好きなフォルダ/ファイルをコンテナに見せる。
    ・いつものファイルのように簡単に編集可能
    ・ただし OS の違いが大きく影響し、誤操作リスクもある。

 利用シーンに応じて、“手軽さ”“自由度” をどの程度求めるのかを考え、ボリュームマウントとバインドマウントを使い分けましょう。次のコンテンツでは、それぞれのマウント方法をコマンド例と共に解説し、実際にどのように指定すればいいかを見ていきます。