docker运行nginx绑定配置文件失败原因以及问题解决

 更新时间:2023年02月22日 09:17:27   作者:渝涅  
最近工作中在使用docker运行nginx的时候遇到了些问题,下面分享给大家,这篇文章主要给大家介绍了关于docker运行nginx绑定配置文件失败原因以及问题解决的相关资料,需要的朋友可以参考下

直接执行启动命令会失败

pull镜像:

docker pull nginx

然后执行启动命令:

docker run -d -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/cache:/var/cache/nginx \
--restart=always nginx

如果/mydata/nginx/conf/nginx.conf文件不存在,这里会出现docker报错,因为docker不允许绑定不存在的文件。

而直接新建一个空的/mydata/nginx/conf/nginx.conf虽然docker不会报错,但是nginx却无法在容器中正常启动,通过docker ps -a命令查看,nginx会处于exit或者一直restart状态,因为nginx的运行依赖于nginx.conf这个配置文件中的相关配置。

解决思路及办法

先运行一个容器,不使用-v绑定,然后将容器中的相关文件直接copy到指定位置,之后就可以删除容器,直接运行之前的启动命令了。

具体操作如下:

首先创建好相关文件夹:

mkdir -p \
/mydata/nginx/html \
/mydata/nginx/conf \
/mydata/nginx/logs \
/mydata/nginx/cache

跑起来一个nginx容器:

docker run -d --name nginx nginx

复制配置文件和文件夹到宿主机指定目录:

docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/
docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf.d

删除原容器:

docker rm -f nginx

运行启动命令,-v绑定相关卷:

docker run -d -p 80:80 -p 443:443 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/cache:/var/cache/nginx \
--restart=always nginx

移动copy的conf.d目录中的文件到正确的位置:

 mv /mydata/nginx/conf.d/* /mydata/nginx/conf/conf.d/
 rm -rf /mydata/nginx/conf.d

这样nginx容器就可以正常运行,并且我们通过上面的操作将nginx.conf文件和conf.d目录都映射到了宿主主机上,以后需要修改nginx.conf文件或者为conf.d添加.conf文件都只需要在宿主机上的对应位置操作即可。

总结

到此这篇关于docker运行nginx绑定配置文件失败原因以及问题解决的文章就介绍到这了,更多相关docker运行nginx绑定配置文件失败内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker镜像仓库hub.docker.com无法访问的解决方法

    docker镜像仓库hub.docker.com无法访问的解决方法

    最近许多群友都询问为什么无法访问Docker镜像仓库,本文就来介绍一下docker镜像仓库hub.docker.com无法访问的解决方法,感兴趣的可以了解一下
    2023-08-08
  • 详解docker pull下来的镜像存储在哪里

    详解docker pull下来的镜像存储在哪里

    这篇文章主要介绍了详解docker pull下来的镜像存储在哪里,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 写给前端的nginx配置指南基于docker所有配置秒级运行(最新讲解)

    写给前端的nginx配置指南基于docker所有配置秒级运行(最新讲解)

    这篇文章主要介绍了写给前端的nginx配置指南基于docker所有配置秒级运行,通过 docker 高效学习 nginx 配置,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Intellij IDEA快速实现Docker镜像部署的方法步骤

    Intellij IDEA快速实现Docker镜像部署的方法步骤

    本文主要介绍了Intellij IDEA快速实现Docker镜像部署的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • docker安装nginx并配置通过https访问的方法

    docker安装nginx并配置通过https访问的方法

    这篇文章主要介绍了docker安装nginx并配置通过https访问的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 解决Docker network Create加--subnet后遇到问题

    解决Docker network Create加--subnet后遇到问题

    这篇文章主要介绍了解决Docker network Create加--subnet后遇到问题。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker镜像推送(push)到Docker Hub的实现

    Docker镜像推送(push)到Docker Hub的实现

    这篇文章主要介绍了Docker镜像推送(push)到Docker Hub的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker本地部署Drupal并实现公网访问的详细步骤

    Docker本地部署Drupal并实现公网访问的详细步骤

    Drupal是使用PHP语言编写的开源内容管理框架(CMF),它由内容管理系统(CMS)和PHP开发框架(Framework)共同构成,这篇文章主要给大家介绍了关于Docker本地部署Drupal并实现公网访问的详细步骤,需要的朋友可以参考下
    2023-12-12
  • Docker 教程之Docker Hub详细介绍

    Docker 教程之Docker Hub详细介绍

    这篇文章主要介绍了Docker 教程之Docker Hub详细介绍的相关资料,需要的朋友可以参考下
    2016-12-12
  • Docker Compose 实践及梳理

    Docker Compose 实践及梳理

    Docker Compose是一个用于定义和运行多个Docker应用程序的工具。通过使用YAML文件来配置应用程序的服务,使用单个命令可以从配置中创建并启动所有服务,今天通过本文给大家介绍Docker Compose 实践及梳理,感兴趣的朋友一起看看吧
    2021-09-09

最新评论