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

Docker Nginx安装使用以及踩坑点总结

Docker Nginx安装使用以及踩坑点总结

拉取nginx镜像

docker pull nginx:latest

运行镜像

暂时不需要配置volume挂载

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

参数详解:

--name nginx 指定容器的名称

-p 80:80 映射端口

-d 守护进程运行

创建volume目录

mkdir -p /www/nginx/conf
mkdir -p /www/nginx/conf.d 
mkdir -p /www/nginx/html
mkdir -p /www/nginx/log

拷贝nginx容器对应的文件默认配置(关键)

docker cp nginx:/etc/nginx/nginx.conf /www/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /www/nginx
docker cp nginx:/usr/share/nginx/html /www/nginx

注意: nginx.conf是文件,不是目录,很多的文章都没提到这个注意点,直接就创建了一个nginx.conf目录进行挂载。 如果nginx.conf是一个目录,在后面挂载的时候会报错。

报错信息:

[root@poloyy ~]# docker run -it -d -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
e0e4b40446a64927603b85854c3a6472b2dfa5681fcbfa0e170c16b15e5c8fdd
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
[root@poloyy ~]# client_loop: send disconnect: Broken pipe

报错信息的意思:

 mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)?
将“/root/nginx.conf”挂载到“/etc/nginx/nginx.conf”的rootfs导致:通过procfd挂载:不是目录:未知:您是否试图将目录挂载到文件上(反之亦然)

报错的原因是:

  • 不支持直接挂载文件,只能挂载文件夹

  • 想要挂载文件,必须宿主机也要有对应的同名文件

停止容器

docker stop nginx
docker rm nginx

重新运行镜像(挂载volume)

docker run --name nginx -p 80:80 --privileged --restart=always \
-v /www/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /www/nginx/conf.d:/etc/nginx/conf.d:rw \
-v /www/nginx/html:/usr/share/nginx/html:rw \
-v /www/nginx/log:/var/log/nginx \
-d nginx

后续配置了SSL之后,需增加对端口443的监听,只需增加 -p 443:443 即可。

宿主机执行Nginx容器命令

  • 检查配置: docker exec -it nginx /bin/sh -c "nginx -t"

  • 重载配置: docker exec -it nginx /bin/sh -c "nginx -s reload"

原文链接

Docker Nginx安装使用以及踩坑点总结

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

相关文章:

  • 单位建数字档案室的意义和作用
  • JavaWeb——关于servlet种mapping地址映射的一些问题
  • NTRU 加密方案
  • 第一章前端开发ES6基础
  • 【算法练习Day30】无重叠区间 划分字母区间合并区间
  • Linux部署Redis哨兵集群 一主两从三哨兵(这里使用Redis6,其它版本类似)
  • VR结合|山海鲸虚拟展厅解决方案
  • 记一次企业微信的(CorpID)和密钥(Secret)泄漏的利用案例
  • 使用Selenium和Java编写爬虫程序
  • 【Java】PAT Basic Level 1023 组个最小数
  • Redis中设置Hash数据类型的过期时间
  • 你真的了解CPU和GPU?
  • HarmonyOS开发:NodeJs脚本实现组件化动态切换
  • 基于springboot实现就业信息管理系统项目【项目源码+论文说明】计算机毕业设计
  • Vue组件的本质和手写通过render渲染函数渲染组件
  • 【优选算法系列】第一节.双指针(283. 移动零和1089. 复写零)
  • Vue(uniapp)父组件方法和子组件方法执行优先顺序
  • 怎么突破反爬虫机制
  • CSP-J2023入门组第二轮T4:旅游巴士
  • OS的Alarm定时器调度机制
  • I2C协议
  • 全栈经验总结(不间断更新)
  • 什么是恶意代码?
  • HCL模拟器选路实验案例
  • toluaframework中C#怎么调用Lua的方法以及无GC方法
  • 安装pandas报错
  • 总有一天,你一定会很棒
  • 带你深入了解队列(c/cpp双版本模拟实现)
  • 接口自动化测试实操
  • Virtual DOM