はじめに
Dockerでボリュームをマウントする方法と、ホストのパスをマウントする方法について、それぞれ-v
(--volume
) オプションと --mount
オプションを使ってまとめます。
ボリュームとは?
- Dockerが管理する保存領域
- コンテナのデータをホストのファイルシステム上に保存する仕組み
- 下記のコマンドを実行して名前付きボリュームを作成すると、デフォルトで
/var/lib/docker/volumes/
以下に対応するディレクトリが作成される
docker volume create [ボリューム名]
名前付きボリューム
- 特徴
- ボリュームに名前を付けて使う
- データを永続化、複数コンテナ間で共有する場合に向く
-v
オプションを使う場合
- 定義方法
docker run -v [ボリューム名]:[コンテナ内のマウント先パス] [イメージ名]
- 例
docker run -v myvolume:/app/data myimage
--mount
オプションを使う場合
- 定義方法
docker run --mount type=volume,source=[ボリューム名],target=[コンテナ内のマウント先パス] [イメージ名]
- 例
docker run --mount type=volume,source=myvolume,target=/app./data myimage
匿名ボリューム
- 特徴
- ボリュームを名前を付けずに使う
- 一時的に使いたい場合に向く
-v
オプションを使う場合
- 定義方法
-
[ボリューム名]:[コンテナ内のマウント先]
のうち、ボリューム名を省略する
-
docker run -v [コンテナ内のマウント先パス] [イメージ名]
- 例
docker run -v /app/data myimage
--mount
オプションを使う場合
- 定義方法
-
source
を省略する
-
docker run --mount type=volume,target=[コンテナ内のマウント先パス] [イメージ名]
- 例
docker run --mount type=volume,target=/app/data myimage
バインドマウント
- 特徴
- ホストマシン上の特定ディレクトリやファイルを直接マウントする
- ホストとコンテナの間で同期される
-v
オプションを使う場合
- 定義方法
docker run -v [ホスト側のパス]:[コンテナ内のマウント先パス] [イメージ名]
- 例
docker run -v /host/data:/app/data myimage
--mount
オプションを使う場合
- 定義方法
docker run -mount type=bind,source=[ホスト側のパス],target=[コンテナ内のマウント先パス] [イメージ名]
- 例
docker run --mount type=bind,source=/host/data,target=/app/data myimage
参考