使用Dockerfile文件构建基于centOS系统的tomcat镜像
以下是Dockerfile的内容:
#基础镜像 FROM centos #维护人员信息
MAINTAINER weigs "weigs1231@gmail.com" #设置工作目录,这个命令是用来切换工作目录的,相当于cd命令
WORKDIR /home #安装JDK #创建JDK目录,等一下的JDK安装到这个目录 RUN mkdir JDK #上篇文章中已经下载了jdk,为了节省时间我这里使用COPY命令将宿主机中的jdk压缩包复制到镜像中,这样做存在的问题是使用Dockerfile创建镜像的宿主机必须在对应的路 #径下有这个包。我这里的包和Dockerfile文件在同一个目录下,源文件的路径需要是Dockerfile文件所在目录(上下文根目录)的相对路径 #也可以使用wget、 apt-get等命令在线下载 COPY jdk-8u112-linux-x64.tar.gz /home/ #解压复制到镜像中的jdk压缩包,完成后删除,RUN命令可以使用 && 将两条命令放到一起,减少镜像的层数 RUN tar zxf /home/jdk-8u112-linux-x64.tar.gz -C /home/JDK && rm -rf /home/jdk-8u112-linux-x64.tar.gz #设置环境变量
ENV JAVA_HOME /home/JDK/jdk1.8.0_112
ENV PATH $PATH:$JAVA_HOME/bin #安装tomcat,同JDK
RUN mkdir Tomcat
COPY apache-tomcat-8.0.39.tar.gz /home/
RUN tar zxf /home/apache-tomcat-8.0.39.tar.gz -C /home/Tomcat && rm -rf /home/apache-tomcat-8.0.39.tar.gz #暴露tomcat的内部端口,如果没有修改tomcat的配置文件的话,默认是8080端口
EXPOSE 8080 #启动容器时,执行脚本文件启动Tomcat并持续输出日志,防止容器退出。
ENTRYPOINT /home/Tomcat/apache-tomcat-8.0.39/bin/startup.sh && tail -f /home/Tomcat/apache-tomcat-8.0.39/logs/catalina.out
以上是Dockerfile的内容。
执行命令构建镜像
sudo docker build -t weigs/tomcat /home/
-t的意思是将后面的内容作为构建镜像的标签,方便记忆跟检索,好像不允许大写字母。
/home/是指Dockerfile文件在这个目录下,如果Dockerfile文件在执行命令的当前目录可以用英文句号.表示
构建过程如下图,每执行一条命令都会生成一个镜像并缓存:
使用sudo docker images -a可以查看到这些缓存的镜像。
运行镜像,将宿主机的80端口映射到窗口的8080也就是tomcat监听的端口,这样直接访问宿主机就可以访问到tomcat的主页了。
sudo docker -it --name filetomcat -p 80:8080 weigs/tomcat8 /bin/bash
由于增加了输出tomcat日志的指令,可以看到如下:
启动完成后,在浏览器中访问宿主机的ip+端口,就可以访问通了

实际示例:
[root@master01 home]# ls
apache-tomcat-7.0.90.tar.gz deploy_files Dockerfile jdk-8u181-linux-x64.tar.gz lib server.xml
[root@master01 home]# cat server.xml
<Context path="/" reloadable="true" docBase="/home/Tomcat/apache-tomcat-7.0.90/deploy_files" workDir="/home/Tomcat/apache-tomcat-7.0.90/deploy_files" sessionCookieName="JSESSIONID1"/>
[root@master01 home]# cat Dockerfile FROM centos
MAINTAINER weigs "weigs1231@gmail.com" WORKDIR /home RUN mkdir JDK COPY jdk-8u181-linux-x64.tar.gz /home/ RUN tar zxf /home/jdk-8u181-linux-x64.tar.gz -C /home/JDK ENV JAVA_HOME /home/JDK/jdk1.8.0_181
ENV PATH $PATH:$JAVA_HOME/bin RUN mkdir Tomcat
COPY apache-tomcat-7.0.90.tar.gz /home/
RUN tar zxf /home/apache-tomcat-7.0.90.tar.gz -C /home/Tomcat && rm -rf /home/apache-tomcat-7.0.90.tar.gz ADD server.xml /home/Tomcat/apache-tomcat-7.0.90/conf/ ADD lib/*.jar /home/Tomcat/apache-tomcat-7.0.90/lib/
COPY deploy_files /home/Tomcat/apache-tomcat-7.0.90/deploy_files EXPOSE 8080 ENTRYPOINT /home/Tomcat/apache-tomcat-7.0.90/bin/startup.sh && tail -f /home/Tomcat/apache-tomcat-7.0.90/logs/catalina.out
docker build -t zhiyi/tomcat02 /home/ docker run -it --name zhiyitomcat02 -p 8080:8080 zhiyi/tomcat02 /bin/bash

使用Dockerfile文件构建基于centOS系统的tomcat镜像的更多相关文章
- 使用Dockerfile文件构建基于centOS系统的nodejs镜像
实际示例: [root@node01 node]# ls dev-web dev-web.tar.gz Dockerfile node-v8.14.0-linux-x64.tar.gz package ...
- 用dockerfile构建基于centos系统的jar包的镜像
实际示例: [root@master01 home-dataline]# ls dataline.jar Dockerfile jdk-8u181-linux-x64.tar.gz [root@mas ...
- 基于CentOS系统下的Oracle的安装
背景 最近的数据库的实验课,要求利用虚拟机安装CentOS系统,并在此系统上安装Oracle_11g软件实现监听,在windows系统上安装SQL Developer软件作为客户端 ,从而可以在SQL ...
- 基于CentOS系统部署EPICS环境
1.虚拟机安装CentOS系统2.打开终端,以root账户登录3.进入/usr/local目录下,新建文件夹epics,并进入该文件夹4.在/usr/local/epics目录下,执行wget htt ...
- 7、DockerFile案例:自定义centos、自定义tomcat、webapps项目发布
1.Base镜像(scratch) Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的 2.自定义镜像mycentos 1.Hub默认CentOS镜像什 ...
- howto:在构建基于debian的docker基础镜像时,更换国内包源
debian经常被用作构建应用镜像的基础镜像,如微软在构建linux下的dotnetcore基础镜像时,提供了基于debian 8(jessie)和debian 9(stretch)的镜像. 由于这些 ...
- 基于centos 创建一个stress镜像
最近需要学习docker的Cgroups机制,需要用到stress进行测试,前期工作就是自己创建一个stress镜像. 新建一个 Dockerfile 文件 [vagrant@localhost ~] ...
- CentOS系统下Tomcat的优化
一.JVM内存优化(线程优化) vim ./bin/catalina.sh 在catalina.sh文件中添加以下配置: JAVA_OPTS="-server -Xms128m -Xmx12 ...
- 自定义构建基于.net core 的基础镜像
先说一个问题 首先记录一个问题,今天在用 Jenkins 构建项目的时候突然出现包源的错误: /usr/share/dotnet/sdk/2.2.104/NuGet.targets(114,5): e ...
随机推荐
- 约合¥1720 LG法国称G Watch将于6月开卖
近来LG法国官方透露音讯称旗下首款智能手表G Watch将于本年6月份正式出售,预定报价为199欧元(约合¥1720). 这就意味着这款智能手表会在googleI/O大会完成之后就会开端出售,从goo ...
- 附3 springboot源码解析 - 构建SpringApplication
package com.microservice.framework; import org.springframework.boot.SpringApplication; import org.sp ...
- Ubuntu 12.04 安装配置 Apache2
Apache2安装 1 我们使用root账户进行安装,首先切换到root账户,输入命令: sudo su 2 安装 Apache2 apt-get install apache2 在浏览器输入你服务器 ...
- Container With Most Water leetcode java
题目: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, a ...
- Swap Nodes in Pairs leetcode java
题目: Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1-> ...
- jquery选择器用法笔记(第一部分)
由于我在项目中用jquery比较多,而且觉得jquery真的很不错,尤其是其灵活高效的选择器更是令人无法忘怀.那么,今天就来写一篇非常基础的关于jquery选择器的文章,路过的朋友可以收藏以作参考. ...
- android 中的 window,view,activity具体关系
通过讨论这个问题,我们能够见识到google是对面向对象模式的理解,能够理解android底层的一些调用.这也是一道很常见的面试题. 我们这篇文章就来解决这四个问题: Android 中view的显 ...
- 解决LayoutItem lable 太长的问题
<Style TargetType="dxlc:LayoutItem"> <Setter Property="AddColonToLabel" ...
- Win10系统下面的TR1008解决方案
最近为了体验高大上的Win10系统,于是就把本本原来的Win7旗舰版 升级 到了Win10专业版.之后又在本本上部署了cognos,但是在打开Transform导入IQD数据源的时候就报错了,错误和之 ...
- (转)Unity中protobuf的使用方法
在移动手机游戏开发中,目前Unity3D已成为比较主流的开发技术. 那么对于客户端服务器协议的打解包,我们有3中常用的处理方式: 1.自定义结构体:在协议中直接传输代码中自定义的结构体:这种方式的坏处 ...