docker挂载nginx出错
1.报错如下
2.错误原因
报错原因很奇怪,在docker hub官网上查询了一下发现以下有用的信息:
官网这段话的大概意思就是,要给nginx挂载卷,要先有一个配置文件才能挂载,具体做法就是先以不挂载卷的形式正常启动一个nginx容器,然后从中cp拷贝一份配置文件,删除这个容器,再重新以挂载卷的形式启动一个新容器。
1.先把之前的nginx容器删除,再启动一个不需要配置文件的nginx
docker run -d -p 80:80 --name nginx-test nginx
2.在Linux中使用curl localhost查看是否正常启动服务,也可以在浏览器上输入服务器或虚拟机ip地址查看,不过端口一定要查看是否暴露了。
3.把容器内的配置文件拷贝一份到本机上,使用docker cp命令
4.把启动的容器停止并删除
5.使用挂载命令再次启动容器
docker run -d -p 80:80 -v /home/nginx/conf:/etc/nginx -v /home/nginx/html:/usr/share/nginx/html --name nginx01 nginx
6.如继续报错403,是为/home/nginx/html目录下是空的,所以才会出现403,因为此时me/nginx/html对应的是容器中的/usr/share/nginx/html目录,可以进到容器中查看目录,如果为空,自然访问80端口服务不会有任何东西了。这个时候只需要在本地主机目录的/home/nginx/html目录下放上一个index.html就行了(使用exit命令退出容器)。
7.再次访问80端口即可解决。