注意:先安装docker 我这边已经安装好docker
1、拉取nginx 和 tomcat的镜像
docker pull nginx
docker pull tomcat
2、启动两个容器实例
docker run -d -p 80:80 --name nginx1 nginx
docker run -d -p 8080:8080 --name=tomcat1 tomcat
3、进入容器进行修改
注意:我这边用的是最新版的tomcat所以无法直接访问tomcat的web页面,必须要替换一下才可以访问
docker exec -it 容器id bash #进入tomcat容器
rm -rf webapps #删除webapps
mv webapps.dist/ webapps #改名
4、将容器内部文件拷贝到宿主机
mkdir /opt/data #创建nginx存放目录
docker cp 容器id:/etc/nginx /opt/data/nginx #拷贝nginx 的配置文件
mkdir /opt/tomcat1 #创建tomcat1的存放目录
mkdir /opt/tomcat2 #创建tomcat2的存放目录
docker cp 容器id:/usr/local/tomcat/conf /opt/tomcat1/ #拷贝配置文件到tomcat1
docker cp 容器id:/usr/local/tomcat/webapps /opt/tomcat1/ #拷贝web文件到tomcat1
docker cp 容器id:/usr/local/tomcat/conf /opt/tomcat2/ #拷贝配置文件到tomcat2
docker cp 容器id:/usr/local/tomcat/webapps /opt/tomcat2/ #拷贝web文件到tomcat2
5、修改tomcat1的web页面防止弄混
vim /opt/tomcat1/webapps/ROOT/index.jsp
将输出的内容改为tomcat1=8080
6、修改tomcat2的配置文件内的端口
vim /opt/tomcat2/conf/server.xml
7、将我们之前启动的tomcat容器删除防止端口争抢而报错
docker ps
docker stop 容器id
docker rm 容器id
8、启动两个tomcat容器实例
docker run -d --name tomcat1 -p 8080:8080 -v /opt/tomcat1/conf/:/usr/local/tomcat/conf/ -v /opt/tomcat1/webapps/:/usr/local/tomcat/webapps/ tomcat
docker run -d --name tomcat2 -p 9090:9090 -v /opt/tomcat2/conf/:/usr/local/tomcat/conf/ -v /opt/tomcat2/webapps/:/usr/local/tomcat/webapps/ tomcat
9、在浏览器打开检查
查看tomcat1 本机IP加8080端口
查看tomcat2 本机IP加9090端口
10、启动成功后在nginx的http模块下配置如下
注意我们在上面的操作中已经将nginx的配置文件拷贝到/opt/data/nginx中所以我们可以直接在宿主机进行修改配置
vim data/nginx/nginx.conf
upstream www.sy.com{
server 172.17.0.3:8080 weight=5;
server 172.17.0.4:9090 weight=10;
}
注意:如果不知道容器IP可用以下命令查看
docker inspect 容器ID
因为我在本地进行了hosts解析所以直接写的域名如果不配置解析可直接写IP
11、修改conf.d/default.comf配置文件
vim /opt/data/nginx/conf.d/defaulf.conf
12、将我们之前启动的nginx容器删除并启动新的nginx容器
docker stop 容器id
docker rm 容器id
docker run -d -p 80:80 --name nginx1 -v /opt/data/nginx/:/etc/nginx nginx
13、在浏览器进行访问
http://IP:80
通过反馈会发现会在两个页面之间进行跳转
当然我们通过域名访问也是可以的
www.sy.com
proxy_pass配置upstream对象即可;
这样就可以实现负载均衡,我们请求nginx服务器地址,不断刷新请求,就会在两台tomcat机器进行跳转显示内容,达到负载均衡的目的。