docker-compose文件https://docs.docker.com/compose/compose-file/#/volumes- volume-driver显示了相对于compose文件安装主机子目录的各种方法。
例如:
volumes:#只需指定一个路径,然后让Engine创建一个体积-/ var / lib / mysql #指定绝对路径映射-/ opt / data:/ var / lib / mysql #主机上相对于Compose文件的路径-./cache:/tmp/cache #用户相对路径-〜/ configs:/ etc / configs /:ro #命名卷-datavolume:/ var / lib / mysql
volumes:#只需指定一个路径,然后让Engine创建一个体积-/ var / lib / mysql
#指定绝对路径映射-/ opt / data:/ var / lib / mysql
#主机上相对于Compose文件的路径-./cache:/tmp/cache
#用户相对路径-〜/ configs:/ etc / configs /:ro
#命名卷-datavolume:/ var / lib / mysql
是否可以在指定位置挂载命名卷的子目录?例如我尝试过的以下内容,但似乎无法正常工作。
# Named volume - datavolume/sql_data:/var/lib/mysql
我假设我可以通过将数据卷装入类似的位置来进行管理/data,然后在每个容器的Dockerfiles中创建从子目录到这些位置的符号链接。
/data
例如在docker-compose.yml文件中
volumes: - datavolume:/data
然后在容器Dockerfile中
RUN ln -s /data/sql_data /var/lib/mysql
我开始沿着这条路走,但它变得凌乱,无法正常工作。在我放弃该方法或花费时间进行调试之前,我想确保没有办法仅指定已命名卷的子目录。
否,因为compose/config/config.py#load(config_details)检查是否datavolume/sql_data与命名的卷相匹配(在中compose/config/validation.py#match_named_volumes())
compose/config/config.py#load(config_details)
datavolume/sql_data
compose/config/validation.py#match_named_volumes()
datavolume会,datavolume/sql_data不会。
datavolume
正如memetech在评论中指出的那样,这是自2017年4月以来跟踪此问题的问题: moby/moby问题32582:“ [功能]允许安装命名卷的子目录 ”。
moby/moby