先给大家简单说下Docker的概念

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

1、先说如何在docker中部署tomcat

第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7;

第二步:创建Dockerfile,命令如:touch Dockerfile;

第三步:编写Dockerfile,命令如:vim Dockerfile,完成以下命令编写:

FROM ubuntu:14.04

MAINTAINER zhaichong

ENV REFRESHED_AT 2015-7-28

RUN apt-get -yqq update

RUN apt-get -yqq install tomcat7 default-jdk

ENV CATALINA_HOME /usr/share/tomcat7

ENV CATALINA_BASE /var/lib/tomcat7

ENV CATALINA_PID /var/run/tomcat7.pid

ENV CATALINA_SH /usr/share/tomcat7/bin/catalina.sh

ENV CATALINA_TMPDIR /tmp/tomcat7-tomcat7-tmp

RUN mkdir -p $CATALINA_TMPDIR

VOLUME ["/var/lib/tomcat7/webapps/"]

EXPOSE 8080 9000

ENTRYPOINT ["/usr/share/tomcat7/bin/catalina.sh", "run" ]

说明:这里的EXPOSE要把程序中需要使用到的端口都要暴露出去。根据环境变量CATALINA_BASE可以知道VOLUME指定的目录就是tomcat部署war包的目录。

第四步:生成镜像,命令如:docker build -t test/test_app . (注意这里有个英文的句号);注意,在这个过程中docker需要下载安装的jdk和tomcat程序所以比较忙,可以通过命令:docker image查看下,返回的数据中第一行有个REPOSITORY和TAG都是的数据行,其中的VIRTUAL_SIZE是阶段性变大的,说明是在下载。

第五步:运行镜像生成容器,命令如:docker run --name test_app -d -p 8080:8080 -p 9000:9000 镜像id,如果不知道镜像id是多少就使用命令:docker images查看下,注意这里把EXPOSE出来的端口和宿主主机的端口绑定起来了,以后就可以使用宿主主机的IP地址和这个端口来访问docker容器中的tomcat以及其中的应用程序了。

第六步:测试:在浏览器地址栏敲:http://宿主主机ip:8080/,好了成功了。

可以使用命令:docker port 容器id 8080,这个命令查看容器的8080端口和宿主主机端口之间的映射关系,而已看出来现在容器的8080端口映射的是宿主主机的8080端口。

2、再说如何部署我们的应用程序到docker容器的tomcat里?

大家知道tomcat在容器中,如果要像在宿主主机上那样部署tomcat应用程序肯定是不行的。那么采用什么办法呢?

第一步:上一个问题中我们已经知道war包是部署在容器的位置是:/var/lib/tomcat7/webapps/,那么这个位置到底在什么地方?使用命令:docker inspect -f "{{.Volumes}}" 容器id,如果不知道容器id,则可以通过:docker ps的方式查看到所有运行的容器,也可以通过docker ps -a的方式查看所有容器,包括运行的和不运行的。

会得出以下的结果:

map[/var/lib/tomcat7/webapps:/var/lib/docker/vfs/dir/28d6dd0455d92f0160288a56f838d8aeeff402a843bd57d3b21fcd80eac7df02],

在这个map的中括号里,冒号前边的是容器中的目录,冒号后边的对应的宿主主机中的目录,所以我们只需要把我们的war包拷贝到这个地方然后重启tomcat即可。

这里要注意,由于我们上边写的Dockerfile中默认容器启动时是会启动tomcat的,所以这里只需要重启容器就能让tomcat把我们的容器加载上,命令如:

docker restart 容器id

3、如果要看成tomcat的日志呢?比如查看启动时的日志,则可以使用命令:

docker logs 容器id,如果要持续观察日志,则是:docker logs -f 容器id,这个时候日志是从头开时读的,如果日志很长会刷屏很久,如果只打算看最新的日志可以采用以下的方式:docker logs --tail 0 -f 容器id

注意,有的时候我们想在执行docker run命令的时候才指定映射的Volumes,则可以使用如下命令:

docker run --name gboat2_ca -d -p 8080:8080 -p 9000:9000 --link db001:db_ca -v /home/webapp/ca:/var/lib/tomcat7/webapps/ 64de1445c34c

这里一定要注意的是最后的英文冒号前边是宿主主机的文件夹路径,冒号后边是容器中的路径。

以上所述是小编给大家介绍的在docker中部署tomcat并且部署java应用程序的步骤详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对聚米学院网站的支持!

java none怎么用tomcat_在docker中部署tomcat并且部署java应用程序的步骤详解相关推荐

  1. docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解

    1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创 ...

  2. IDEA中Git的配置及其使用(图文结合,步骤详解)

    前言 项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,而且现在市场上Git的使用率已经远远高于SVN.我们在用ID ...

  3. vue中如何调用ios摄像头_vue2.0调用摄像头步骤详解

    这次给大家带来vue2.0调用摄像头步骤详解,使用vue2.0调用摄像头的注意事项有哪些,下面就是实战案例,一起来看一下. 可以在github 上下载demo链接 vue组件代码 import {Ex ...

  4. 如果在docker中部署tomcat,并且部署java应用程序

    2019独角兽企业重金招聘Python工程师标准>>> 如果在docker中部署tomcat,并且部署java应用程序 博客分类: docker 1.先说如何在docker中部署to ...

  5. java实现for文件删除_Java 添加、删除、替换、格式化Word中的文本的步骤详解(基于Spire.Cloud.SDK for Java)...

    Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本.deleteTextRange()删除文本.updateTextRang ...

  6. java中String s=abc及String s=new String(abc)详解

    java中String s="abc"及String s=new String("abc")详解 1.   栈(stack)与堆(heap)都是Java用来在R ...

  7. Docker实现运行tomcat并部署项目war包,并实现挂载目录

    一.docker下载tomcat镜像并运行 1:搜索tomcat镜像 docker search tomcat 2:根据搜索出来的列表下载tomcat #下载命令docker pull tomcat ...

  8. Thrift实现C#调用Java开发步骤详解

    概述 Thrift实现C#调用Java开发步骤详解 详细 代码下载:http://www.demodashi.com/demo/10946.html Apache Thrift 是 Facebook ...

  9. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

最新文章

  1. 机器学习模型调优总结!
  2. python计算出nan_python如何进行汇总统计?
  3. 人民日报:为人工智能注入更多安全基因
  4. 设计模式解析学习(一)
  5. numpy笔记 linalg
  6. Java设计模式笔记(7)适配器模式
  7. python3之后版本读取网页的内容
  8. 添加删除 板块 struts2
  9. 如何部署一台DELL虚拟化服务器:CentOS7.4系统,虚拟化技术
  10. Java 代理模式之三:Cglib动态代理
  11. Android Studio:Support Library依赖包的版本号
  12. 叛乱联机服务器未响应,叛乱沙漠风暴开服注意事项及操作指南经验一览
  13. Diffusion扩散模型简述 + 代码demo
  14. SO、SOP、SOIC、MSOP、TSSOP、TSOP、VSSOP、SSOP、SOJ封装详解
  15. 为什么短除法能求最小公倍数?
  16. 联想g510升级换什么cpu好_老775平台还有升级CPU的必要吗?实测来告诉你
  17. java-net-php-python-jspm库存管理系统计算机毕业设计程序
  18. AngelSword(天使之剑)漏洞框架的使用
  19. 【应用随机过程】04. 马尔可夫链的平稳分布
  20. 网线连接olt配置计算机IP,EPON-ONU-OLT配置手册.pdf

热门文章

  1. windows7 系统盘 瘦身软件介绍: 冗余文件清理工具
  2. C#模拟js的Json对象创建,操作
  3. Eclipse+svn+subclipse配置
  4. 剑指offer(C++)-JZ23:链表中环的入口结点(数据结构-链表)
  5. 内存释放_把微信这两个开关关掉, 手机立马释放大量内存, 快去试试吧
  6. 接口测试——Jmeter常见问题解决方法
  7. python开发效率怎样提高_python 提高开发效率的5个小技巧
  8. 单元测试框架-Junit
  9. 21天Jmeter打卡Day12 逻辑控制器之循环控制器
  10. 为什么企业宁愿花 15K 重新招人,也不愿意花 10K 留住老测试员?