使用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 ...
随机推荐
- git 查看commit提交的内容
在使用git的过程中,我们经常需要查看某次commit修改了哪些内容,与之相关的命令就是: git log git show 首先,需要通过git log打印所有commit hashID,之后的gi ...
- idea 配置简单web
1.创建Facets 创建web的facets,可修改web的目录路径,如java目录 2.创建artifacts 创建web aplication exploded ,添加lib包到web-inf, ...
- Objective-C:NSMutableString类的常见操作
NSMutableString可变字符串的主要的操作是创建.增加.删除.插入.替换 代码操作如下: // // main.m // 03-NSMutableString // // Created b ...
- linux下添加分区并挂载目录、卸载并删除分区
添加分区并挂载目录 Linux的硬盘识别: 一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘 设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. 1.关闭服务器加上新硬盘 ...
- strtok()函数
strtok()这个函数大家都应该碰到过,但好像总有些问题, 这里着重讲下它 首先看下MSDN上的解释: char *strtok( char *strToken, const char *strDe ...
- 掌握Sed命令
带书签PDF版,喜欢的话,欢迎多提意见和建议,你的支持是血蝙蝠最大的前进动力! http://download.csdn.net/detail/challenge_c_plusplus/6480007 ...
- N-Queens II leetcode java
题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ...
- AngularJs 阻止事件运行,防止冒泡穿透事件
ng-click 低啊用方法后 添加语句$event.stopPropagation(); <button type="button" ng-click="doSo ...
- 自己定义带三角形箭头的TextView
<?xml version="1.0" encoding="utf-8"? > <resources> <declare ...
- wstring to wchar_t*
If you want to convert from std::wstring to const WCHAR* (i.e. the returned pointer gives read-onl ...