简体   繁体   English

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

[英]How to set a path on host for a named volume in docker-compose.yml

Example below creates dbdata named volume and references it inside db service:下面的示例创建名为 volume 的dbdata并在db服务中引用它:

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

(from https://stackoverflow.com/a/35675553/4291814 ) (来自https://stackoverflow.com/a/35675553/4291814

I can see the path for the volume defaults to:我可以看到默认卷的路径为:

/var/lib/docker/volumes/<project_name>_dbdata

My question is how to configure the path on host for the dbdata volume?我的问题是如何为dbdata卷配置主机路径?

With the local volume driver comes the ability to use arbitrary mounts; local卷驱动程序可以使用任意挂载; by using a bind mount you can achieve exactly this.通过使用绑定安装,您可以完全实现这一点。

For setting up a named volume that gets mounted into /srv/db-data , your docker-compose.yml would look like this:要设置挂载到/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'

I have not tested it with the version 2 of the compose file format, but https://docs.docker.com/compose/compose-file/compose-versioning/#version-2 does not indicate, that it should not work.我还没有使用 compose 文件格式的第 2 版对其进行测试,但是https://docs.docker.com/compose/compose-file/compose-versioning/#version-2没有表明它不应该工作。

I've also not tested it on Windows...我也没有在 Windows 上测试过它......

The location of named volumes is managed by docker;命名卷的位置由 docker 管理; if you want to specify the location yourself, you can either "bind mount" a host directory, or use a volume plugin that allows you to specify a path.如果您想自己指定位置,您可以“绑定挂载”一个主机目录,或者使用允许您指定路径的卷插件。

You can find some details in another answer I posted recently;您可以在我最近发布的另一个答案中找到一些详细信息; https://stackoverflow.com/a/36321403/1811501 https://stackoverflow.com/a/36321403/1811501

As of docker-compose v3.2 you can now do it as follows:docker-compose v3.2您现在可以执行以下操作:

https://docs.docker.com/compose/compose-file/compose-file-v3/#long-syntax-3 https://docs.docker.com/compose/compose-file/compose-file-v3/#long-syntax-3

version: "3.2"
services:
  db:
    image: mysql
    volumes:
      - type: volume # Or use bind
        source: /srv/db-data
        target: /var/lib/mysql

volumes:
  db-data:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 相对路径不适用于 docker-compose.yml 中的命名卷 - Relative path not working with named volumes in the docker-compose.yml 如何在 docker-compose.yml 中指定直接路径卷? - How do you specify a direct path volume in docker-compose.yml? 如何使用docker-compose.yml文件命名卷? - How to name a volume using a docker-compose.yml file? 如何在docker-compose.yml中选择卷挂载点? - How to select volume mountpoint in docker-compose.yml? 如何在docker-compose.yml中包含Docker主机的IP? - How to include IP of Docker host in docker-compose.yml? 为什么 docker-compose 在随机路径中创建卷而不是我在 docker-compose.yml 中指定的路径? - Why is docker-compose creating volume in random path instead of the path I specified in docker-compose.yml? docker-compose.yml命名卷的语法 - docker-compose.yml Syntax for Named Volumes 使用 docker-compose.yml 中的 Linux 容器在 Windows 主机上挂载 Docker 卷 - Mount Docker volume on Windows host with Linux containers in docker-compose.yml Docker - 如何在 docker-compose.yml 中设置 Apache + PHP - Docker - how to set up Apache + PHP in docker-compose.yml docker 容器的用户权限是否会影响主机对 docker-compose.yml 中挂载卷的权限? - Can user privilege of docker container impact permission of host machine on mounted volume in docker-compose.yml?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM