【问题标题】:How to mount nginx docker's /etc/nginx/ directory to host virtual machine?如何挂载 nginx docker 的 /etc/nginx/ 目录来托管虚拟机?
【发布时间】:2020-04-08 18:57:28
【问题描述】:

我在大学得到了这个任务,在虚拟机上运行一个nginx docker,并将/etc/nginx/目录挂载到'pwd'/webconfig,但是不知道怎么解决。我试过这个:

docker run -p 80:80 -v 'pwd'/webconfig/:/etc/nginx/ --name websrv -d nginx

但我在 docker 日志中收到此错误消息

[emerg] 1#1: open() "/etc/nginx/nginx.conf" 失败(2: 没有这样的文件或目录) nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)

之后我也尝试挂载 nginx.conf:

docker run -p 80:80 -v 'pwd'/webconfig/nginx.conf/:/etc/nginx/nginx.conf/ -v 'pwd'/webconfig/:/etc/nginx/ --name websrv -d nginx

然后我在日志中收到此错误消息:

[crit] 1#1: pread() "/etc/nginx/nginx.conf" 失败(21: 是目录) nginx: [crit] pread() "/etc/nginx/nginx.conf" 失败(21:是目录)

这是我无法前进的地方。

【问题讨论】:

标签: linux docker nginx volume mount


【解决方案1】:

请确保您使用正确的文件夹来获取 nginx.conf 文件。

'pwd' 通常指当前目录。如果您在终端中运行pwd,您将看到您所在的当前文件夹。 获取该文件夹并添加 /webconfig 以获取完整的当前目录。你可能会得到类似/usr/username/home/webconfig/

你可以使用那个文件夹来挂载你的 docker 卷,你的命令应该是这样的:

docker run -p 80:80 -v '/usr/username/home/webconfig/:/etc/nginx/ --name websrv -d nginx

【讨论】:

    【解决方案2】:

    试试这个:

    docker run -p 80:80 -v $PWD/webconfig:/etc/nginx/ --name websrv -d nginx
    

    【讨论】:

      【解决方案3】:

      您可以使用VOLUME 命令将卷从主机系统挂载到 docker 容器。除此之外,您还可以使用COPY 命令上传已创建的配置文件。

      【讨论】:

      • VOLUME 指令未指定有关主机系统内容的任何内容。几乎没有理由使用它。
      • @DavidMaze 实际上我认为用户想将整个目录从主机系统挂载到容器中。 Docker 文档很好地组合了这个场景docs.docker.com/storage/bind-mount
      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-10
      • 2014-11-12
      • 1970-01-01
      • 2017-07-22
      相关资源
      最近更新 更多