繁体   English   中英

在Docker中将目录挂载到命名卷

[英]Mounting a directory to a named volume in Docker

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

volumes:
   appData:

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

一切正常,但是如何将主机文件添加到命名卷中? 什么时候。

不幸的是,没有像现在这样简单的方法可以实现这一目标。 Docker文档建议在这种情况下使用绑定安装或第三方卷插件。 看不到任何近期实施该计划的计划。

但是,您可以通过其他方式手动进行操作-

  1. 创建卷(使用撰写时,以当前目录(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-我知道这不是标准解决方案,但这就是我可以找到的快速解决方案。 对于永久性修复,您可以使用第三方音量插件。
https://docs.docker.com/engine/extend/legacy_plugins/

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM