使用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 ...
随机推荐
- java通过System.getProperty获取系统属性
getProperties public static Properties getProperties() 确定当前的系统属性. 首先,如果有安全管理器,则不带参数直接调用其 checkProper ...
- Python的开源人脸识别库:离线识别率高达99.38%
Python的开源人脸识别库:离线识别率高达99.38% github源码:https://github.com/ageitgey/face_recognition#face-recognitio ...
- Mac下在Intellij Idea里设置VM运行参数的正确方法
打开应用程序,右键选择显示包内容 可以看到idea的初始jvm配置的位置: 但是真正生效的配置是个人目录下的此文件,注意每个版本都会重新生成一次 设置idea使其在右下角的位置显示内存使用情况:483 ...
- 学习笔记:状态压缩DP
我们知道,用DP解决一个问题的时候很重要的一环就是状态的表示,一般来说,一个数组即可保存状态.但是有这样的一些题 目,它们具有DP问题的特性,但是状态中所包含的信息过多,如果要用数组来保存状态的话需要 ...
- 【BZOJ】【3670】【NOI2014】动物园
KMP算法 其实就像题面描述的那样……主要还是KMP算法的基础上搞一些DP(递推)之类…… 随便yy一下就可以得到50分了,因为num数组跟next的关系还是很密切的…… f[i]=f[next[i] ...
- 【C++ Primer】用于大型程序的工具
1. 异常处理 异常以类似于将实參传递给函数的方式抛出和捕获.异常可以是可传给非引用实參的随意实參的类型,这意味着必须可以复制该类型的对象. 当抛出一个表达式的时候,被抛出对象的静态编译时类型将决定异 ...
- 寻路DEMO
网格场景的寻路算法DEMO 灰色格子为默认正常蓝色格子表示为障碍物,不可进入红色细条在格子周围,表示格子的墙,用于阻碍行走紫色为当前鼠标选中格子黄色为寻路的起始位置和结束位置.鼠标左键设置,CTRL+ ...
- Java 动态向 JTable 中添加数据
import java.awt.Toolkit; import javax.swing.SwingUtilities; import javax.swing.UIManager; import jav ...
- C++ vector 删除符合条件的元素
C++ vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法. C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的 ...
- java 解析 XML实例
package com.hseact.fecp.servlet; import java.io.IOException; import javax.xml.parsers.DocumentBuilde ...