1、 docker网络冲突
docker拥有四种网络模式(run --network={模式}):
- bridge(默认,与路由器的hdcp功能类似,会给容器分发ip地址。
docker network inspect bridge
可查详情), - host(与宿主机共享Network namespace),
- container(与其他容器共享Network namespace),
- none(无网络),
容器启动后提示:**WARNING: Published ports are discarded when using host network mode**
docker网络,bridge,host, -p与host会产生冲突导致-p映射端口无效 :
以下代码为错误案例!部署solo系统时看别的博主的文档导致掉进坑里
docker run -dit -p 8889:80 --name nginx --network=host \
docker network inspect bridge/host:
此命令可以查到docker容器对应的联网方式以及ip
2、docker部署nginx配置文件设置监听端口(新手易疏忽)
由于nginx是装在docker中的 -p xx:80
(默认),
所以nginx监听的端口只能为80,server=>listen设置其他端口无效,
因为只给容器配置了一个映射端口,除非run容器前设置多个-p,才可设置其他端口
3、nginx添加配置文件非常便捷
映射目录中:dockerData/nginx/conf=>nginx.conf
内有一句话:“include /etc/nginx/conf.d/*.conf”
也就是说conf.d文件夹
下的conf文件
都可以会加载进参数中,
那么我们只需要新建文件,直接输入 server与location结构即可生效。
4、查看error.log寻找nginx启动即关闭原因
nginx启动立即关闭可能是配置文件格式或者其他问题,可以进入nginx:/var/log/nginx/error.log
内查看具体错误原因
5、docker部署nginx的配置文件获取方式及宿主机映射
导出配置文件(没有就重新run一个映射):
docker cp nginx:/etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /dockerData/nginx/conf/conf.d
导出后启动(-p xx:80 xx=>备案了用80,没备案用其他,原因与2相同,监听只能对应-p :右边的端口):
docker run -d -p 80:80 --name nginx \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/www:/usr/share/nginx/html \
-v /dockerData/nginx/logs:/var/log/nginx nginx
解释:
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ 挂载配置文件 nginx.conf
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d 挂载配置文件 default.conf
-v /dockerData/nginx/www:/usr/share/nginx/html 挂载项目文件
-v /dockerData/nginx/logs:/var/log/nginx 挂载日志文件
nginx启动后访问报错403 Forbidden,原因:映射后 宿主机dockerData/nginx/www 无html文件,
在/dockerData/nginx/www新建一个html文件即可。