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


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

    拉取nginx镜像

    docker pull nginx:latest
    
    • 1

    运行镜像

    暂时不需要配置volume挂载

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

    参数详解:

    --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
    
    • 1
    • 2
    • 3
    • 4

    拷贝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
    
    • 1
    • 2
    • 3

    注意: 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
    
    • 1
    • 2
    • 3
    • 4

    报错信息的意思:

     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挂载:不是目录:未知:您是否试图将目录挂载到文件上(反之亦然)
    
    • 1
    • 2

    报错的原因是:

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

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

    停止容器

    docker stop nginx
    docker rm nginx
    
    • 1
    • 2

    重新运行镜像(挂载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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    后续配置了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安装使用以及踩坑点总结

  • 相关阅读:
    2022锦江行——非繁城品:疫情之下,存量酒店的突围之道
    SurfaceFlinger启动-Android12
    Netty入门指南之传统通信的问题
    ②. GPT错误:图片尺寸写入excel权限错误
    【Redis学习笔记05】Jedis客户端(中)
    网页制作课作业基于HTML+CSS+JavaScript+jquery仿慕课网教学培训网站设计实例 企业网站制作
    校园二手物品交易系统微信小程序设计
    深度解剖数据在栈中的应用
    梯度消失/梯度爆炸
    Java面试题之“==“和“equals“和HashCode的区别
  • 原文地址:https://blog.csdn.net/github_38967228/article/details/134033967