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

下面的示例创建 数据库数据命名卷并在 分贝服务中引用它:

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卷的路径?

124710 次浏览

指定卷的位置由 docker 管理; 如果您想自己指定位置,您可以“绑定挂载”主机目录,或者使用允许您指定路径的卷插件。

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

使用 local卷驱动程序可以使用任意的挂载; 通过使用 绑定装置,您可以精确地实现这一点。

为了设置一个已命名的卷,并将其安装到 /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 上测试过。