【问题标题】:Mounting a directory to a named volume in Docker在 Docker 中将目录挂载到命名卷
【发布时间】:2018-07-01 06:49:10
【问题描述】:

我希望我的项目的源代码可以通过命名卷访问(而不是使用绑定挂载方法)。但是对我来说有一个困惑,我不知道我应该如何将我的主机目录挂载到一个命名卷。所以,我在 docker-compose.yml 中定义了一个卷:

volumes:
   appData:

services:
   nginx:
      .
      .
      .
      volumes:
         - appData:/usr/share/data

一切正常,但是我应该如何将我的主机文件添加到命名卷?以及何时。

【问题讨论】:

标签: linux docker containers


【解决方案1】:

不幸的是,没有像现在这样直接的方法来实现这一点。 Docker 文档建议在这种情况下使用绑定挂载或 3rd 方卷插件。看不到任何近期实施相同的计划。

但是,您可以通过另一种方式手动完成 -

  1. 创建卷(使用compose时,以当前目录(PROJECTNAME)为前缀创建卷)-
    $ docker volume create ${PROJECTNAME}_appData

  2. 创建一个虚拟容器并将主机目录复制到命名卷中并验证它 -

    $ docker container create --name dummy -v ${PROJECTNAME}_appData:/root alpine  #Create 
    $ docker cp ${PWD}/source_myfile.txt dummy:/root/myfile.txt     #copy 
    $ docker run -v ${PROJECTNAME}_appData:/root alpine ls -l /root #Verify 
    

现在当您执行docker-compose up -d 时,它将跳过创建卷,因为它已经存在。

PS - 我知道这不是一个标准的解决方案,但这就是我能找到的快速解决方案。对于永久修复,您可以使用 3rd 方音量插件。
https://docs.docker.com/engine/extend/legacy_plugins/

获取有关该问题的更多详细信息 -
参考 - https://github.com/moby/moby/issues/25245

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2019-09-04
    • 2023-04-09
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多