web-dev-qa-db-ja.com

docker-compose.ymlで名前付きボリュームのホスト上のパスを設定する方法

次の例では、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ボリュームのホスト上のパスを構成する方法です。

59
misha

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でもテストしていません...

47

名前付きボリュームの場所は、Dockerによって管理されます。自分で場所を指定する場合は、ホストディレクトリを「バインドマウント」するか、パスを指定できるボリュームプラグインを使用できます。

最近投稿した別の回答で詳細を確認できます。 https://stackoverflow.com/a/36321403/1811501

8
thaJeztah