背景:应用和数据库装在两个服务器,数据库的那个服务器不能外网访问,所以在能外网访问的应用服务器上配了个mysql反向代理,把mysql端口映射出来,在这记录一下安装配置过程,以及中间所遇到的问题。
1、查看可用的nginx版本
docker search nginx
2、取最新的nginx安装
docker pull nginx:latest
3、查看docker 镜像是都有nginx
docker images
4、运行nginx
$ docker run --name nginx -p 8080:80 -d nginx
nginx :容器名称
8080:本地端口
80:容器内部的80端口
-d:nginx: 设置容器在后台一直运行
5、查看nginx是否启动
docker ps
查看所有正在运行的容器
docker ps -l
查看最近一次运行的容器
docker ps | grep nginx
利用管道符查询
6、进入容器
首先查看启动容器的 CONTAINER ID
docker ps
然后输入 docker exec -it CONTAINER ID bash
命令进入容器,此处 CONTAINER ID为上边查询出的。
7、修改nginx配置文件
nginx.conf配置文件在 /etc/nginx/ 下面,但是你使用vim nginx.conf
或者vi nginx.conf
会发现vi或者vim命令没有用,解决办法:apt-get update
完成之后 apt-get install vim
8、容器重启
docker restart nginx
此处应注意 如果你要重新定义端口映射,还是想起nginx这个名字的话 在停止容器的同时应该docker rm nginx
,将nginx这个name移除 否则会报错。
9、端口开启
防火墙开启端口,安全组放开端口。
10、nginx主机配置文件挂载
docker run --name nginx -p **8089:80** -v **/home/inspur/docker-nginx/nginx.conf**:/etc/nginx/nginx.conf -v **/home/inspur/docker-nginx/log**:/var/log/nginx -v **/home/inspur/docker-nginx/conf.d/default.conf**:/etc/nginx/conf.d/default.conf -d nginx
加粗的几个地方是需要注意的点
--name 给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p 映射端口,将docker宿主机的8089端口和容器的80端口进行绑定
-v 挂载文件用的,第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,第二个表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
-d 表示启动的是哪个镜像
vim nginx.conf
添加如下配置文件
stream { upstream cloudsocket { hash $remote_addr consistent; server 192.168.0.3:3306 weight=5 max_fails=3 fail_timeout=30s; } server { listen 3306;#数据库服务器监听端口 proxy_connect_timeout 10s; proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。 proxy_pass cloudsocket; } }
注意stream 与http同级 不要写在http里边。
然后重启容器
1. docker stop nginx 2. docker rm nginx 3. docker run --name nginx -p 3306:3306 -v /home/inspur/docker-nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/inspur/docker-nginx/log:/var/log/nginx -v /home/inspur/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -d nginx
记得开启3306 端口哦