当前位置: 首页 > 面试题库 >

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

狄鸿禧
2023-03-14
问题内容

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

是否可以在指定位置挂载命名卷的子目录?例如我尝试过的以下内容,但似乎无法正常工作。

# 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

我开始沿着这条路走,但它变得凌乱,无法正常工作。在我放弃该方法或花费时间进行调试之前,我想确保没有办法仅指定已命名卷的子目录。


问题答案:

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

datavolume会,datavolume/sql_data不会。

正如memetech在评论中指出的那样,这是自2017年4月以来跟踪此问题的问题:
moby/moby问题32582:“
[功能]允许安装命名卷的子目录 ”。



 类似资料:
  • 问题内容: Docker文档指出,可以将单个文件装载到Docker容器中: -v标志还可用于从主机挂载单个文件-而不是目录。 这会将您放入新容器中的bash外壳中,您将从主机获得bash历史记录,退出容器时,主机将具有在容器中键入命令的历史记录。 但是,当我尝试将文件挂载为目录时: 我的Dockerfile看起来像这样: Docker版本为1.9.1,内部版本为a34a1d5。 这是文档问题,还是

  • 问题内容: 我最近创建了一个在Windows上的boot2docker上运行的mongodb docker实例。 不幸的是,在尝试kitematic的过程中,我意外地从mongo容器中删除了该卷,并且无法再访问我的数据。 mongo实例似乎创建了一个新卷,而旧卷现在仍悬空(孤立)并且未安装在任何容器中。 有什么办法可以恢复吗? 问题答案: 感谢您的答复,它使我处于正确的轨道,我设法使用以下命令启动

  • 问题内容: 我有一个正在进行dockerizing的开发环境,并且我希望能够实时重新加载所做的更改而不必重建docker映像。我使用docker compose是因为redis是我应用程序的依赖项之一,我喜欢能够链接redis容器 我在我的中定义了两个容器: 我已经到了我应用程序的dockerfile中添加卷的地步,但是如何将主机的目录挂载到卷中,以便对代码的所有实时编辑都可以反映在容器中? 这是

  • 问题内容: 我正在运行一个Jenkins集群,其中在Master和Slave中,它们都作为Docker容器运行。 主机是在MacOS上运行的最新的boot2docker VM。 为了使Jenkins能够使用Docker执行部署,我将docker.sock和docker客户端从主机安装到Jenkins容器,如下所示: 在将卷装载到Jenkins容器中运行的Docker容器时,我遇到了问题。例如,如果

  • 问题内容: 描述 我正在通过Hyper-V在Windows 10上使用Docker 1.12.5版本,并想在当前路径中将容器可执行文件用作命令。我构建了运行良好的Docker映像,但是挂载当前路径时遇到了问题。这个想法是创建一个别名并执行一个命令,以便可以在当前目录的系统范围内使用它。 设定 我有一个带文件夹“ test”的驱动器E,在其中有一个名为“ Windows主机上的文件夹”的文件夹,以显

  • 创建一个 volume volume1 请问有没有什么办法把 volume1/dir1挂载到 xxx 呢?