上一篇文章的基本做法是通过centOS的官方镜像启动一个容器,然后进入到容器中,手动敲命令安装JDK跟tomcat,这个跟在linux下搭建没有什么区别,只是用来熟悉docker命令,并且在日常开发中如过没有完全符合自己需求的image时(例如RabbitMQ设置用户名和密码),我们可以pull一个现成的,在这个基础上进行修改,效率可能会更高一点,在大部分情况下我们都会选择使用Dockerfile来构建自己的image。

  1、准备相关的软件包和镜像

  docker pull centos 拉取镜像,创建/opt/software包,在包内放入jdk和tomcat的压缩包

  2、编辑Dockerfile,特别需要注意的是jdk、tomcat的压缩包在镜像中解压后的包名,在设置环境变量时不要写错了,我的内容如下

#基础镜像
FROM centos
#维护人员信息
MAINTAINER asd #设置工作目录,这个命令是用来切换工作目录的,相当于cd命令
WORKDIR /usr #将宿主机中的jdk压缩包复制到镜像中,使用相对路径,我的Dockerfile和jdk、tomcat的压缩包在一个目录下,而二个参数是镜像中保存的路径
COPY jdk-8u152-linux-x64.tar.gz /usr
COPY apache-tomcat-8.0..tar.gz /usr #RUN用来执行linux命令,解压jdk和tomcat,在解压后可以将镜像中的压缩包删了,以降低最终创建镜像的大小
RUN tar -zvxf /usr/jdk-8u152-linux-x64.tar.gz -C /opt && rm -rf /usr/jdk-8u152-linux-x64.tar.gz
RUN tar -zvxf /usr/apache-tomcat-8.0..tar.gz -C /opt && rm -rf /usr/apache-tomcat-8.0..tar.gz #设置环境变量
ENV JAVA_HOME /opt/jdk1..0_152
ENV PATH $PATH:/$JAVA_HOME/bin #暴露tomcat的内部接口
EXPOSE
#启动容器时,执行脚本文件启动Tomcat并持续输出日志,防止容器退出
ENTRYPOINT /opt/apache-tomcat-8.0./bin/startup.sh && tail -f /opt/apache-tomcat-8.0./logs/catalina.out

  3、创建镜像

  在/opt/software目录下执行创建命令 docker build -t mycat:1.0 .,macat是镜像的名字,命令最后面有一个"点",代表当前路径,不要忘了。创建完成后输入docker images,可以看到自己创建的镜像。

  4、运行镜像,创建一个tomcat server

  docker -it --name mycat001 -p 8088:8080 mycat:1.0 /bin/bash

  启动完成后,在浏览器中访问宿主机的ip+端口,就可以访问通了,如果出现类似于“driver failed programming external connectivity on endpoint goofy_bose”的错误,可以试一下关闭防火墙并重启docker,若出现“/opt/jdk-8u152/bin/java: No such file or directory ”类似的错误,则是环境变量的路径配置的不正确。

  

最新文章

  1. Linux A机器免密码SSH登录B机器
  2. 第一次打开Photoshop时的基本设置
  3. 深入浅出SQL笔记1–数据和表
  4. Apple Instruments
  5. event 内存泄漏
  6. 一个苹果证书怎么多次使用(授权Mac开发)——导出p12文件
  7. iframe页面改动parent页面的隐藏input部件value值,不能触发change事件。
  8. 通过MYSQL命令行直接建数据库
  9. 快速美眉(FastMM)使用手记
  10. OpenStack 中的neutron-server启动过程
  11. 5次Shift会触发粘滞键的妙用(转)
  12. JAVA面向对象-----接口的概述
  13. js库 - 浅拷贝 & 深拷贝
  14. 《Android进阶之光》--ButterKnife
  15. Linux--信号阻塞与屏蔽
  16. Yii使用笔记 2
  17. mocha测试接口类型及测试报告收集
  18. 如何在服务器(centOS系统)上运行JavaWeb项目
  19. ✅问题:Rails.ajax自定义请求
  20. 严重:Error configuring application listener of class org.springframework.web.util.IntrospectorCleanupListener

热门文章

  1. Java中多对多映射关系
  2. 淘宝IP地址库采集器c#
  3. Android--iOS抓取崩溃日志
  4. 再次理解js中的call函数
  5. MVC4 Action 两种异步方式
  6. 操作Word的辅助类(word2003)
  7. 菜鸟的Xamarin.Forms前行之路——从新建项目到APP上架各种报错问题解决方法合集(不定时更新)
  8. [网络流24题][CTSC1999] 家园
  9. mongodb 的基本操作
  10. vector迭代器失效的几种情况