docker-compose文件https://docs.docker.com/compose/compose-file/#/volumes-volume-driver显示了相对于撰写文件挂载主机子目录的各种方法。
例如:
卷:#只需指定一个路径,让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中来管理这个,创建从子目录到位置的符号链接。
例如在docker-compose.yml文件中
volumes:
- datavolume:/data
然后在容器Dockerfile
中RUN ln -s /data/sql_data /var/lib/mysql
我开始沿着这条路走下去,但它变得凌乱而且无法正常工作。在我放弃这种方法或投入时间调试它之前,我想确保没有办法只指定命名vollume的子目录。
答案 0 :(得分:21)
否,因为compose/config/config.py#load(config_details)
检查datavolume/sql_data
是否与指定的卷匹配(在compose/config/validation.py#match_named_volumes()
中)
datavolume
会,datavolume/sql_data
不会。
由于memetech指出in the comments,因此自2017年4月开始追踪这一问题:
moby/moby
issue 32582:" [功能]允许挂载指定卷的子目录"。