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
docker Dockerfile学习---nginx负载均衡tomcat服务的更多相关文章
- centos7+nginx负载均衡Tomcat服务
接着上一篇:www.cnblogs.com/lkun/p/8252815.html 我们在上一篇在一台centos7服务器上部署了两个nginx,接下来我们使用一个nginx实现tomcat的负载均衡 ...
- nginx负载均衡tomcat和配置ssl
目录 tomcat 组件功能 engine host context connector service server valve logger realm UserDatabaseRealm 工作流 ...
- 利用Docker快速创建Nginx负载均衡节点
本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.Self-Host Kestrel 1. 在vs2017中新建dotnet core2. ...
- httpd或Nginx负载均衡tomcat
实验环境:CentOS7 #两台tomcat的基本配置如下: [root@webapps localhost]#setenforce 0 [root@webapps localhost]#iptabl ...
- docker上配置nginx负载均衡
采用ubuntu系统,docker安装自行百度 1.安装tomcat docker run -d -p : tomcat docker run -d -p : tomcat 安装两个实例,端口分别为8 ...
- docker容器配置nginx负载均衡 -----加权
首先要准备三个nginx的容器: 第二个容器: 第三个容器: 进入第一个容器 要配置的容器(docker exec -it 容器名 /bin/bash) vi /usr/local/nginx/co ...
- Tomcat服务部署与Nginx负载均衡配置
一.中间键产品介绍 目前来说IBM的WebSphere,Oracle的Weblogic占据了市场上java语言Web站点的部分份额,该两种软件都是商业化的软件,由于性能优越,可靠性高等优点应用于大型互 ...
- 使用Docker快速创建.Net Core2.0 Nginx负载均衡节点
本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.Self-Host Kestrel 1. 在vs2017中新建dotnet core2. ...
- Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群
Tomcat集群,Nginx集群,Tomcat+Nginx 负载均衡配置,Tomcat+Nginx集群 >>>>>>>>>>>> ...
随机推荐
- zabbix-Graphs
图形 概述 随着大量的监控数据被采集到Zabbix中,如果用户可以以可视化的表现形式来查看发生了什么事情,那么和仅仅只有数字的表现形式比起来则更加轻松. 以下是进行图形设置的地方.图形可以一目了然地掌 ...
- v-distpicker 一个好用的三级联动的插件
// 引入插件npm install v-distpicker --save import VDistpicker from 'v-distpicker' Vue.component('v-distp ...
- 深入Dagger:自定义AutoValue
前言 上一篇文章介绍了JavaPoet的原理和使用,这里在介绍一下AutoValue的原理,并模仿自定义实现一个AutoValue. AutoValue的是Google为了实现ValueClass设计 ...
- Nginx基础详细讲解
Nginx基础详细讲解 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...
- JSON对象排序并生成URL参数
1、for in function jsontourl(param) { let params = {}, data=[]; let arr = Object.keys(param).sort(); ...
- hdu 4300 拓展kmp
题目大意: 输入样例个数,每个样例有两行,第一行是26个字母,分别代表a~z加密后的密文:第二行代表一串密文+明文,密文一定是完整的,但明文可能不完整,让你输出最短的(密文+明文): 基本思路: 拓展 ...
- json数据返回数字,页面显示文字处理
var obj = { 1:'你好1', 2:'你好2', 3:'你好3' } var e = obj[1]; e; //'你好1'
- DELPHI 多线程(TThread类的实现)
之前学习了用API实现,让我们再学习下用DELPHI的TThread类. 先新建一个普通的工程,再新建一个线程类File>>New>>Othre>>Delphi F ...
- vue中使用v-if判断数组长度是出现length报错
在vue中使用v-if判断数组的长度时出现报错 <el-collapse-item :key="index" v-if="data.childrens.length ...
- INNODB存储引擎之缓冲池
以下的资料总结自:官方文档和<MySQL技术内幕-INNODB存储引擎>一书. 对INNODB存储引擎缓冲池的那一段描述来自博文:http://www.ywnds.com/?p=9886说 ...