Docker のバインドマウントと volume の違いを整理します。どちらもデータ永続化に使えますが、管理主体と運用上の意味が異なります。
参考
書籍
書籍
参考書籍
Kubernetes完全ガイド 第2版
Kubernetes の仕組み、リソース、ネットワーク、運用観点を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
バインドマウントと volume の違い
| 種類 | 管理主体 | 主な用途 |
| バインドマウント | ホスト OS | 設定ファイルや任意ディレクトリを直接渡す |
| volume | Docker | コンテナデータを Docker 管理領域に永続化する |
バインドマウントの確認
ホスト側にディレクトリを作成し、コンテナのドキュメントルートへマウントします。
mkdir -p ~/docker-test/html
cat <<'EOF' > ~/docker-test/html/index.html
<html><body>bind mount test</body></html>
EOF
docker run --rm -d --name nginx-bind -p 8080:80 --mount type=bind,source=$HOME/docker-test/html,target=/usr/share/nginx/html,readonly nginx:latest
curl http://127.0.0.1:8080/
docker rm -f nginx-bindvolume の確認
volume は Docker が管理する領域に作成されます。コンテナを削除しても volume を残せばデータは残ります。
docker volume create nginx-volume
docker run --rm -d --name nginx-volume-test -p 8080:80 --mount type=volume,source=nginx-volume,target=/usr/share/nginx/html nginx:latest
docker volume inspect nginx-volume
docker rm -f nginx-volume-test–mount と -v の使い分け
検証や短いコマンドでは `-v` でも動きますが、記事や手順として残す場合は `–mount` の方が意味が明確です。source、target、readonly などを明示でき、読み返したときに事故が少なくなります。
まとめ
ホストの具体的なパスを渡したい場合はバインドマウント、アプリケーションデータを Docker に管理させたい場合は volume が自然です。どちらが優れているというより、管理主体をどちらに置くかで選びます。
Ubuntu 22.04 Docker ボリュームの使い方 – bind mount と volume の違い



