次の例では、dbdataという名前のボリュームを作成し、dbサービス内で参照します。
version: '2'
services:
db:
image: mysql
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
driver: local
( https://stackoverflow.com/a/35675553/4291814 から)
ボリュームのデフォルトのパスは次のとおりです。
/ var/lib/docker/volumes /project_name_ dbdata
私の質問は、dbdataボリュームのホスト上のパスを構成する方法です。
local
ボリュームドライバーには、任意のマウントを使用する機能があります。 bind mountを使用すると、まさにこれを実現できます。
/ srv/db-dataにマウントされる名前付きボリュームを設定する場合、docker-compose.ymlは次のようになります。
version: '2'
services:
db:
image: mysql
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
driver: local
driver_opts:
type: 'none'
o: 'bind'
device: '/srv/db-data'
構成ファイル形式のバージョン2ではテストしていませんが、 https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 は示していません、動作しないはずです。
Windowsでもテストしていません...
名前付きボリュームの場所は、Dockerによって管理されます。自分で場所を指定する場合は、ホストディレクトリを「バインドマウント」するか、パスを指定できるボリュームプラグインを使用できます。
最近投稿した別の回答で詳細を確認できます。 https://stackoverflow.com/a/36321403/1811501