Apache Tomcat遇上docker--猫与鲸鱼的故事

Apache Tomcat简称tomcat,tomcat是由Apache软件基金会开发的开源的web服务器和servlet引擎(又叫servlet容器)。前者为纯Java代码运行的HTTP Web服务器;后者管理和运行servlet,而servlet是运行在 Web 服务器上的作为HTTP客户端请求和HTTP服务器上数据库或应用程序之间的中间层。

最近容器火的不得了,尤其是docker。本文分享的内容就和docker有关,准备环境参见docker实践篇之hello world。下面步入正题:介绍以docker方式部署tomcat容器实现web服务器,包括3个场景:1)快速上手部署一个服务器;2)部署多个服务器;3)控制web服务器返回的内容。

当tomcat遇上docker

快速上手部署一个Tomcat服务器

熟悉一个新的事务tomcat,先立个小目标:快速上手搭建一个服务器。为何要快速上手呢?往往学一个新技术是个漫长的过程,投入很多却迟迟没有回报。为了鼓励自我,学新事物要快,抓住兴趣正浓的机会,让自己看到回报。陌生的东西如何才能快速上手呢?那就是站在巨人的肩膀上,找到官网上对tomcat的说明,按照推荐的方式先部署起来,然后再慢慢研究。

Docker官网针对Tomcat的How to use this image章节开始,首先指定端口启动容器(本地无镜像则下载从网上下载),最后web访问tomcat服务器。

第1步切换root用户执行启动容器命令 :docker run -it --rm -p 8888:8080 tomcat:8.0

启动tomcat容器

容器启动时间长短取决于从网上下载镜像的网络速度,下载完成后启动在几分钟内。

tomcat启动过程

第2步web访问tomcat服务器,在浏览器中输入http://192.168.127.131:8888/。其中192.168.127.131为容器启动所在宿主机的网卡ip。

web访问tomcat服务器

看到回报没有,是不是很神奇,几分钟就部署好一个tomcat服务器,体现了容器的集装箱隔离和轻量化的优势,减少tomcat的依赖和不必要的麻烦。

快速上手部署完后,我们结合docker run部署命令总结下。如果在商用场景下,部署命令尚需改进。先看下启动容器的命令docker run [OPTIONS] IMAGE [COMMAND] [ARG...],其中options中参数 -i:以交互模式运行容器;-t:为容器重新分配一个伪输入终端,通常-t与 -i 一起使用;-p host_port:container_port 映射宿主机的指定端口到容器的指定端口或-p IP:host_port:container_port 映射宿主机指定地址的指定端口到容器的指定端口或 -p IP::port映射宿主机指定ip的任意端口到容器的指定端口。--rm即容器退出状态后自动删除容器。

通过以上介绍可知docker run -it --rm -p 8888:8080 tomcat:8.0,使用容器镜像tomcat:8.0,以交互方式一旦ctrl+c结束docker执行命令则tomcat服务器无法访问,网络上映射宿主机端口8888到容器的8080端口,启动一个容器但退出状态时自动删除容器。命令稍作修改见部署tomcat多容器场景,指定容器名称并以后台方式启动容器,docker run --name tomcat -d -p 8888:8080 tomcat:8.0。

部署多个Tomcat服务器

部署多个服务器主要是为将来测试负载均衡使用。

启动tomcat008容器:docker run --name tomcat008 -d -p 8888:8080 tomcat:8.0,

启动tomcat007容器:docker run --name tomcat007 -d -p 8887:8080 tomcat:8.0,

启动tomcat009容器:docker run --name tomcat009 -d -p 8889:8080 tomcat:8.0

按照以上启动顺序,依次检查是否可以访问http://192.168.127.131:8888/,http://192.168.127.131:8887/,http://192.168.127.131:8889/访问的界面都是一样的,三个tomcat服务器以不同的端口提供相同的服务。

还有一个问题:当容器的宿主机重启或关机开机后容器是不会自己启动的,还要一个个手工启动,麻烦且健壮性差,那怎么做到容器自动启动呢?在容器创建时添加 restart参数即可:docker run --name tomcat --restart=always  -d -p 8889:8080 tomcat:8.0

测试下:关机前有restart 参数且运行的容器,开机后容器自动启动了。

控制web服务器返回的内容

tomcat的代码目录结构

  |---bin:存放启动和关闭tomcat脚本

  |---conf:存放不同的配置文件(server.xml和web.xml);

  |---doc:存放Tomcat文档;

  |---lib/japser/common:存放Tomcat运行需要的库文件(JARS);

  |---logs:存放Tomcat执行时的LOG文件;

  |---src:存放Tomcat的源代码;

  |---webapps:Tomcat的主要Web发布目录(包括应用程序示例);

  |---work:存放jsp编译后产生的class文件。

tomcat访问的服务器也就是webapps下ROOT目录下的文件可以直接调用。

在浏览器中输入http://192.168.127.131:8888/,默认返回的内容是什么?

返回的是/usr/local/tomcat/webapps/ROOT目录里下index.jsp。只要在ROOT目录下创建index.html,文件中写"hello world,2019!"

那么当你调用http://192.168.127.131:8888/index.html,界面上返回的是"hello world,2019!"

能处理返回内容,控制多个主机的返回内容,也就可以分别出来调用是哪个主机。那么由什么来决定返回内容?下次再去了解下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容