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集群 >>>>>>>>>>>> ...
随机推荐
- Python之OS(系统操作)模块常用函数
mkdir(path[, mode=0777]) makedirs(name,mode=511) rmdir(path) removedirs(path) listdir(path) getcwd() ...
- tar 和gzip 的区别
首先要 弄清两个概念:打包和压缩. 打包是指将一大堆文件或目录什么的变成一个总的文件, 压缩则是将一个大的文件通过一些压缩算法变成一个小文件. 为什么要区分这两个概念呢?其实这源于Linux中的很多压 ...
- Codeforces 745E Hongcow Buys a Deck of Cards 状压DP / 模拟退火
题意:现在有n张卡片(n <= 16), 每一轮你可以执行两种操作中的一种.1:获得一张红色令牌和一张蓝色令牌.2:购买一张卡片(如果可以买的话),购买的时候蓝色卡片可以充当蓝色令牌,红色同理, ...
- androidstudio 2.3.3 jni过程汇总(2):2、使用so文件
2.使用so文件 1.在java文件中System.loadLibrary加载包,并且引入native方法. 2.在app/src/main/下新建jniLibs文件夹,将so包带arm文件夹形式导入 ...
- 【读书笔记】剑指offer
导语 所有的编程练习都在牛客网OJ提交,链接: https://www.nowcoder.com/ta/coding-interviews 九章算法的 lintcode 也有这本书的题目.https: ...
- codeforces round 433 C. Planning 贪心
题目大意: 输入n,k,代表n列航班,初始始发实践为1,2,3分钟以此类推,然后输入n个整数分别代表延迟1分钟第i个航班损失多少钱,然后调整后的始发时间表是这样的,任何一辆航班的始发时间不能在他的初始 ...
- vue+cesiumjs的环境搭建【script引入】
[可以看我的博客里另外一篇----- import引入 ,可以不用script引入] 最近做项目要用到cesium,然后参照网上的一些步骤,最后发现报错了,其中有两种错比较多: ① This dep ...
- 后端异步接口url
/wp-common/products.php?term_id=4&page=1 var currentAjax; var total = 0; function getAjaxData(te ...
- 对AngularJs的简单了解
一.简单介绍 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得 ...
- PHP ftp_fget() 函数
定义和用法 ftp_fget() 函数从 FTP 服务器上下载一个文件并保存到本地一个已经打开的文件中. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_fget(ftp ...