docker Dockerfile学习---nginx负载均衡tomcat服务

时间:2023-03-09 15:51:40
docker Dockerfile学习---nginx负载均衡tomcat服务

1、此过程在nginx的基础上,也就是上篇博客写的内容。

2、创建项目目录并上传包,解压

$ mkdir centos_tomcat
$ cd centos_tomcat

$ tar zxvf jdk-7u80-linux-x64.tar.gz
  $ tar zxvf apache-tomcat-7.0.94.tar.gz

3、编辑Dockerfile

# From表示使用centos:latest这个镜像为基础构建我们的镜像
FROM centos:latest # 创建者的基本信息
MAINTAINER xiaozhou (xiaozhou@docker.com) LABEL Discription="基于centos的nginx镜像" version="1.0" # 把jdk文件拷到容器
ADD jdk1..0_80 /usr/local/java # 设置环境变量
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar # 把tomcat文件拷到容器
ADD apache-tomcat-7.0. /usr/local/tomcat7 # 服务端口
EXPOSE

4、构建镜像

$ docker build -t centos:tomcat .

5、启动容器

启动tomcat1

$ docker run --name tomcat01 -d -p : -it centos:tomcat /bin/bash
23a5ff7617772787f644a510b201fc343d541946ea12aedfb13bb2ab64dbfdeb

启动tomcat2

$ docker run --name tomcat02 -d -p : -it centos:tomcat /bin/bash
b016a1cd5a1e7da602a11243107840bf6eff47f8321a284a1f15c95988228b86

6、启动tomcat服务

登陆容器,启动服务

启动服务1

$ docker exec -it 23a5ff761777 /bin/bash
[root@23a5ff761777 /]# cd /usr/local/tomcat7/bin
[root@23a5ff761777 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
Tomcat started.

启动服务2

$ docker exec -it b016a1cd5a1e /bin/bash
[root@b016a1cd5a1e /]# cd /usr/local/tomcat7/bin
[root@b016a1cd5a1e bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
Tomcat started.

7、验证并修改默认页面

浏览器输入:
http://192.168.121.121:8081

出现tomcat服务的默认访问页面

浏览器输入:
http://192.168.121.121:8082

出现tomcat服务的默认访问页面

登陆容器tomcat1

[root@23a5ff761777 /]# cd /usr/local/tomcat7/webapps/ROOT
[root@23a5ff761777 ROOT]# rm -f index.jsp
[root@23a5ff761777 ROOT]# vi index.html
<html>
<title>
webserver
</title>
<body>
<a>Simple Webserver Server1!</a>
</body>
</html>

登陆容器tomcat2

[root@b016a1cd5a1e /]# cd /usr/local/tomcat7/webapps/ROOT
[root@b016a1cd5a1e ROOT]# rm -f index.jsp
[root@b016a1cd5a1e ROOT]# vi index.html
<html>
<title>
webserver
</title>
<body>
<a>Simple Webserver Server2!</a>
</body>
</html>

刷新打开的访问页面,发现默认tomcat页面变化为

Simple Webserver Server1! 

和
Simple Webserver Server2!

8、修改nginx配置

查看所有容器:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b016a1cd5a1e centos:tomcat "/bin/bash" minutes ago Up minutes 0.0.0.0:->/tcp tomcat02
23a5ff761777 centos:tomcat "/bin/bash" minutes ago Up minutes 0.0.0.0:->/tcp tomcat01
d350b2c8a3d5 centos:nginx "/bin/sh -c '/bin/sh…" minutes ago Up minutes 0.0.0.0:->/tcp, 0.0.0.0:->/tcp wonderful_elion

查看tomcat容器IP:

登陆tomcat1

$ docker exec -it 23a5ff761777 /bin/bash
[root@23a5ff761777 /]# yum install net-tools -y
[root@23a5ff761777 /]# ifconfig
eth0: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 172.17.0.3 netmask 255.255.0.0 broadcast 172.17.255.255
ether ::ac::: txqueuelen (Ethernet)
RX packets bytes (13.3 MiB)
RX errors dropped overruns frame
TX packets bytes (156.3 KiB)
TX errors dropped overruns carrier collisions lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen (Local Loopback)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions

登陆tomcat2

[root@b016a1cd5a1e /]# yum install net-tools -y
[root@b016a1cd5a1e /]# ifconfig
eth0: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 172.17.0.4 netmask 255.255.0.0 broadcast 172.17.255.255
ether ::ac::: txqueuelen (Ethernet)
RX packets bytes (13.3 MiB)
RX errors dropped overruns frame
TX packets bytes (222.5 KiB)
TX errors dropped overruns carrier collisions lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen (Local Loopback)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions

登陆nginx容器

$ docker exec -it d350b2c8a3d5 bash

修改nginx配置文件

[root@d350b2c8a3d5 nginx-1.8.]# vi /usr/local/nginx/conf/nginx.conf
在http{} 添加
upstream tomcat_server {
server 172.17.0.3: weight=;
server 172.17.0.4: weight=;
} 在server{} 修改内容为
location / {
proxy_pass http://tomcat_server;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

重载配置

[root@d350b2c8a3d5 nginx-1.8.]# cd /usr/local/nginx/sbin
[root@d350b2c8a3d5 sbin]# ./nginx -s reload

浏览器输入:
http://192.168.121.121:32769/

出现tomcat测试内容信息,刷新页面后出现另一个tomcat的测试内容,页面轮训出现结果。

参考:

http://www.mamicode.com/info-detail-2412717.html