使用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 ...
随机推荐
- 硬件负载均衡F5和软负责均衡Nginx
请直接搜索相关文章了解:http://www.ideadata.com.cn/wisdomAction/readWisdom.do?id=75 F5,硬件 优点:能够直接通过智能交换机实现,处理能 ...
- C语言:通过函数指针来完成两个数的加减乘除
// // main.c // Function_pointer // // Created by mac on 15/8/2. // Copyright (c) 2015年. All rig ...
- SQL查询今天、昨天、7天内、30天【转】
SQL查询今天.昨天.7天内.30天 今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:sele ...
- 关于asp.net页面缓存
1,ASPX页面缓存 页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam=&q ...
- 理解js中的new
new 操作符 在有上面的基础概念的介绍之后,在加上new操作符,我们就能完成传统面向对象的class + new的方式创建对象,在Javascript中,我们将这类方式成为Pseudoclassic ...
- 架构师书单 2nd Edition
了2007年的目标,列了下面待读或重读的书单. "其实中国程序员,现在最需要的是一张安静的书桌.",的确,中国架构师大多缺乏系统的基础知识,与其自欺欺人的宣扬"读书 ...
- 网络结构设计——负载均衡之LVS学习笔记(三)
LVS按个人理解的说就是将一台Linux服务器当作路由器等功能的技术.LVS---Linux虚拟服务器. LVS实现了三种IP负载均衡技术VS/NAT.VS/TUN.VS/DR. 今天简单分享一下我在 ...
- RUP---统一软件开发过程
更详细的见:http://www.ibm.com/developerworks/cn/rational/r-rupbp/ 本文引用:http://baike.baidu.com/view/223583 ...
- asp.net网站项目调用page,或者ashx页面不能用反射
public class TestHandler : System.Web.IHttpHandler { public bool IsReusable { get { return false; } ...
- Discuz常见小问题-无法登陆UCenter怎么办
打开uc_server/model/admin.php找到第22行的$this->cookie_status = 0;改成$this->cookie_status = isset($_CO ...