当前位置: 首页 > news >正文

报错:nginx [emerg] open() etcnginxnginx.conf failed (2 No such file or directory)

报错:nginx: [emerg] open() “/etc/nginx/nginx.conf” failed (2: No such file or directory)

背景:在创建nginx容器时,想把宿主机上的某一目录挂载到容器的/etc/nginx路径,报错"/etc/nginx/nginx.conf" failed (2: No such file or directory)。报错信息说明找不到/etc/nginx/目录下的nginx.conf文件。

思考:这里很奇怪,我需要挂载的是容器中的/etc/nginx/路径,是一个目录。我为什么不能将宿主机上的任一空目录挂载到容器中的/etc/nginx/路径呢?而当我挂载完后,容器/etc/nginx/路径下的内容不会完全复制一份到宿主机被挂载的空目录下吗?为什么还需要在宿主机被挂载的目录上事先存有nginx.conf文件呢?

原因:(ai)“如果你不想使用自定义的nginx.conf文件,你可以不挂载 /etc/nginx 目录,而是让容器使用其默认的配置文件。但如果你选择挂载这个目录,就必须确保 nginx.conf 文件存在。”

基于上面这句话,我将不能把宿主机上任一空目录挂载到nginx容器下的etc/nginx,因为etc/nginx这个路径存放着与nginx初始化相关的配置文件。我需要保证与etc/nginx路径对应的挂载路径存有nginx.conf配置文件,我才能将对应的宿主机目录挂载到容器的etc/nginx路径。

重点事实是,想要挂载到容器的etc/nginx目录,光有nginx.conf文件是不够的。

我参考官方文档将nginx复制出来放到/mydata/nginx目录下,尝试再次创建容器:

docker run -p 80:80 --name nginx \
-v /mydata/nginx:/etc/nginx \
-d nginx

仍然出现报错,报错信息如下:“/etc/nginx/mime.types” failed (2: No such file or directory) in /etc/nginx/nginx.conf:15,意思是找不到mime.types文件…

那怎么办呢?

方法①

将宿主机上的nginx.conf文件挂载到容器/etc/nginx路径下nginx.conf文件,就能成功创建nginx容器了,如下:

docker run -p 80:80 --name nginx \
-v /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-d nginx
# :ro的意思是将宿主机上的nginx.conf文件以只读模式挂载到容器内部,这样容器可以使用这个配置文件,但是不能修改它。

该方法参考官方文档:https://hub.docker.com/_/nginx

这个网站貌似需要科学上网才能访问…

所以我把相关部分截图放在这里:

方法②

新建一个nginx容器,将nginx容器/etc/nginx路径下的全部文件复制到宿主机的/mydata/nginx路径下(/mydata/nginx是我将要挂载的路径),然后删除nginx容器,新创建一个有目录挂载的nginx容器即可。

命令如下:

docker run -p 80:80 --name nginx -d nginx
docker cp nginx:/etc/nginx /mydata/nginx
docker rm -f nginx
docker run -p 80:80 --name nginx \
-v /mydata/nginx:/etc/nginx \
-d nginx

这样就可以将/mydata/nginx目录挂载到容器的/etc/nginx目录下了。


以下参考内容转载自:https://blog.csdn.net/qq_33469537/article/details/126586160

nginx: [emerg] open() “/etc/nginx/nginx.conf” failed (2: No such file or directory)

1.随便启动一个nginx实例,只是为了复制出配置

如果没有对应的nginx版本,可以用docker pull nginx下载最新版本

docker run -p 80:80 --name nginx -d nginx

2.将容器内的配置文件拷贝到当前文件

我们将配置文件放到 /mydata/nginx目录下

cd /mydata/
mkdir nginx
docker container cp nginx:/etc/nginx .
mv nginx/ conf/
mkdir nginx
mv conf/ nginx/

目录结构如下:

drwxr-xr-x. 3 root root 132 Dec 29 2021 conf
drwxr-xr-x. 2 root root 6 Aug 29 00:38 html
drwxr-xr-x. 2 root root 41 Aug 29 00:39 logs

3.终止+删除原容器

docker stop nginx
docker rm nginx

4.创建新的nginx,执行以下命令

docker run -p 80:80 --name nginx 
-v /mydata/nginx/html:/usr/share/nginx/html 
-v /mydata/nginx/logs:/var/log/nginx 
-v /mydata/nginx/conf:/etc/nginx 
-d nginx

5.创建成功,访问nginx

我们可以在我们挂载的mydata/nginx/html目录下创建 index.html。

http://www.lryc.cn/news/513976.html

相关文章:

  • 基于AI的运维资源调度:效率与智能的双重提升
  • 自动化办公 | 根据成绩进行自动评级
  • 纯血鸿蒙ArkUI线性布局详解
  • 小程序组件 —— 22 组件案例 - 轮播区域绘制
  • 如何判断一个学术论文是否具有真正的科研价值?ChatGPT如何提供帮助?
  • 【置顶】测试学习笔记整理
  • 新浪微博Java开发面试题及参考答案
  • 【SQL Server】教材数据库(1)
  • Windows系统下载、部署Node.js与npm环境的方法
  • SQL 总结
  • 设计一个基于Spring Boot开发的电商网站,部署在阿里云上
  • Java jni调用nnom rnn-denoise 降噪
  • C++软件设计模式之状态模式
  • Microsoft Visual Studio中的/MT, /MTd,/MD,/MDd分别是什么意思?
  • 谷粒商城项目125-spring整合high-level-client
  • 日期时间选择(设置禁用状态)
  • 基于SpringBoot的题库管理系统的设计与实现(源码+SQL+LW+部署讲解)
  • 钉钉h5微应用安卓报错error29 ios报错error3 加上报错52013,签名校验失败 (前端)
  • Vue.js组件开发-客户端如何限制刷新Token次数
  • Linux上安装jdk
  • Ardunio BLE keyboard 库的使用
  • django --递归查询评论
  • 【开源免费】基于SpringBoot+Vue.JS音乐网站(JAVA毕业设计)
  • SUBSTRING_INDEX()在MySQL中的用法
  • 对45家“AI+安全”产品/方案的分析
  • Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述
  • Pycharm 中 virtualenv、pipenv、conda 虚拟环境的用法
  • UNI-APP弹窗
  • 【大模型实战篇】LLaMA Factory微调ChatGLM-4-9B模型
  • 【Cesium】三、实现开场动画效果