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

报错: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.kler.cn/a/463602.html

相关文章:

  • 组会 | DenseNet
  • PCA降维算法详细推导
  • 单元测试4.0+思路总结
  • 数字孪生:物联+数据打造洞察世界新视角
  • Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结
  • STM32 拓展 RTC(实时时钟)
  • 【网络协议】开放式最短路径优先协议OSPF详解(一)
  • WebRTC的三大线程
  • 设计模式の状态策略责任链模式
  • 【漫话机器学习系列】027.混淆矩阵(confusion matrix)
  • 计算机网络•自顶向下方法:DHCP、NAT、IPV6
  • 大模型WebUI:Gradio全解系列8——Additional Features:补充特性(下)
  • 如何将vCenter6.7升级7.0?
  • vSAN手动平衡磁盘
  • 对比一下Java和go的unsafe包
  • 【电路笔记】-德摩根定理
  • pycharm+anaconda创建项目
  • 短视频矩阵系统前端搭建技术解析,支持OEM
  • React之从0开始(1)
  • Nginx搭建Web网站
  • 玩转树莓派Pico(21): 迷你气象站7——软件整合改进2
  • 基于SSM(Spring + Spring MVC + MyBatis)框架的旅游资源网站
  • git reset --hard(重置到当前提交,所有未提交的更改都会被永久丢弃)
  • ubuntu中zlib安装的步骤是什么
  • 运维人员的Go语言学习路线
  • 初学stm32---高级定时器输出n个pwm波