我们可以在docker中挂载一个命名卷的子目录吗?

docker-compose文件https://docs.docker.com/compose/compose-file/#/volumes-volume-driver显示了相对于撰写文件装载主机子目录的各种方法。

例如:

卷:#只需指定一个path,让引擎创build一个卷 – / var / lib / mysql

#指定绝对path映射 – / opt / data:/ var / lib / mysql

#主机上的相对于Compose文件的path – ./cache:/tmp/cache

#用户相对path – 〜/ configs:/ etc / configs /:ro

#命名卷 – datavolume:/ var / lib / mysql

是否可以在指定位置挂载指定卷的子目录? 例如下面的东西,我试过了,但似乎没有工作。

# Named volume - datavolume/sql_data:/var/lib/mysql 

我假设我可以通过将数据卷挂载到/data等位置,然后在每个容器的Docker文件夹中创build从子目录到位置的符号链接。

例如在docker-compose.yml文件中

 volumes: - datavolume:/data 

然后在容器Dockerfile中

 RUN ln -s /data/sql_data /var/lib/mysql 

我开始沿着这条路走下去,但是它变得混乱,并没有工作。 在放弃这种方法或投入时间debugging之前,我想确保没有办法指定命名卷的子目录。

否,因为compose/config/config.py#load(config_details)检查datavolume/sql_data与命名卷匹配(在compose/config/validation.py#match_named_volumes()

datavolume会, datavolume/sql_data不会。