手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Docker ボリュームの使い方 – bind mount と volume の違い

Docker のバインドマウントと volume の違いを整理します。どちらもデータ永続化に使えますが、管理主体と運用上の意味が異なります。

バインドマウントと volume の違い

種類管理主体主な用途
バインドマウントホスト OS設定ファイルや任意ディレクトリを直接渡す
volumeDockerコンテナデータを 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-bind

volume の確認

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 の違い

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る