wake-up-neo.com

So legen Sie auf dem Host einen Pfad für ein benanntes Volume in docker-compose.yml fest

Das folgende Beispiel erstellt dbdata ein benanntes Volume und verweist darauf im Service db:

version: '2'
services:
  db:
    image: mysql
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:
    driver: local

(von https://stackoverflow.com/a/35675553/4291814 )

Ich kann den Pfad für die Volume-Standardeinstellungen sehen:

/ var/lib/docker/volume/ Projektname _ dbdata

Meine Frage ist, wie man den Pfad auf Wirt für das dbdata Volumen zusammenbaut.

59
misha

Mit dem Volume-Treiber local können beliebige Mounts verwendet werden. mit einem bind mount können Sie genau dies erreichen.

Zum Einrichten eines benannten Volumes, das in/srv/db-data eingebunden wird, sieht Ihre docker-compose.yml folgendermaßen aus:

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'

Ich habe es nicht mit der Version 2 des Compose-Dateiformats getestet, aber https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 zeigt nicht an , dass es nicht funktionieren sollte.

Ich habe es auch nicht unter Windows getestet ...

47

Der Speicherort der benannten Volumes wird vom Docker verwaltet. Wenn Sie den Speicherort selbst angeben möchten, können Sie entweder ein Host-Verzeichnis "binden" oder ein Volume-Plugin verwenden, mit dem Sie einen Pfad angeben können.

Sie finden einige Details in einer anderen Antwort, die ich kürzlich gepostet habe. https://stackoverflow.com/a/36321403/1811501

8
thaJeztah