#docker runの-vオプションと--mountオプションについて
公式ドキュメントのヒントにはこのように書いてあります。
ヒント: はじめて利用する方は --mount を利用してください。 上級ユーザーは -v や --volume を用いることに慣れているかもしれませんが、--mount を利用するように心がけてください。 --mount の方が簡単に利用することができるとの調査もあります。
おそらく、-vコマンドはある程度ボリュームについて理解していないと、どのマウントタイプを使っていて、どんな挙動をするのかが分からなくなってしまうからでしょう。
#ボリュームタイプのマウントを使用する場合
docker run -d \
--name devtest \
-v myvol2:/app \
nginx:latest
docker run -d \
--name devtest \
--mount source=myvol2,target=/app \
nginx:latest
version: "3.3"
services:
web:
container_name: 'devtest'
image: nginx:latest
volumes:
- myvol2:/app
volumes:
myvol2:
name : myvol2
docker-composeの場合、トップレベルのvolumesが「docker volume create」に対応します。
また、ボリュームタイプのマウントは、「docker volume ls」 で一覧を確認することができます。
#バインドタイプのマウントを使用する場合
docker run -d \
--name devtest \
-v "$(pwd)"/target:/app \
nginx:latest
docker run -d \
--name devtest \
--mount type=bind,source="$(pwd)"/target,target=/app \
nginx:latest
version: "3.3"
services:
web:
container_name: 'devtest'
image: nginx:latest
volumes:
- ./target:/app
volumeタイプのマウントが<ボリューム名>:<コンテナのパス>だったのに対して、
bindタイプのマウントでは、<ホストのパス>:<コンテナのパス>になっています。
上記の二つ以外にもtmpfsというマウントタイプがあります。こちらはホストのメモリ上にデータを保存し、コンテナが停止すると削除されるため、使用用途は機密データを扱う場合などに限られます。