如何在docker-compose.yml中为命名卷设置主机路径

时间:2016-04-03 14:59:03

标签: docker docker-compose volume

下面的示例创建 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中/搬运工/体积/ PROJECT_NAME _dbdata

我的问题是如何在主机上为dbdata卷配置路径。

3 个答案:

答案 0 :(得分:36)

使用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上测试过它......

答案 1 :(得分:8)

命名卷的位置由docker管理;如果你想自己指定位置,你可以"绑定mount"主机目录,或使用允许您指定路径的卷插件。

你可以在我最近发布的另一个答案中找到一些细节; https://stackoverflow.com/a/36321403/1811501

答案 2 :(得分:-1)

docker-compose v3.2开始,您现在可以按照以下步骤进行操作:

注意:很多,正如我想的那样,如果您使用version: "3",它将使用最新/最新的V3,而不是使用v3.0,因此您必须至少指定3.2使用以下配置方法。

https://docs.docker.com/compose/compose-file/#volumes

version: "3.2"
services:
  db:
    image: postgres:latest
    volumes: 
      - type: volume
        source: /opt/db/vols/dbdata
        target: /var/lib/postgresql/data
        volume:
          nocopy: true



volumes:
   dbdata:

注意:

已命名的卷必须在顶级卷键下列出,如图所示。