1.首先建立一个专用的dockerfile目录,方便统一存放将要创建的Dockerfile文件及相关资源,

例如:mkdir mydockerself

2.定位到mydockerself路径下,下载linux版本的tomcat和jdk,以备使用

3.新建Dockerfile文件

touch Dockerfile

4.编辑文件内容如下:

FROM centos
#作者
MAINTAINER zxp #安装vim编辑器
RUN yum -y install vim
#设置访问时默认进入的目录,进入/usr/local目录
ENV MYPATH /usr/local
WORKDIR $MYPATH
#在/usr/local下创建jdk目录,用来存放jdk文件
#RUN mkdir jdk
#在/usr/local下创建tomcat目录,用来存放tomcat
#RUN mkdir tomcat #将宿主机的jdk目录下jdk文件拷至镜像的/usr/local目录下,并自动解压。ADD与COPY命令区别
ADD jdk-8u181-linux-x64.tar.gz /usr/local/
#将宿主机的tomcat目录下的文件拷至镜像的/usr/local目录下,并自动解压
ADD tomcat8.tar.gz /usr/local/ #设置环境变量
ENV JAVA_HOME /usr/local/jdk1..0_181
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATLINA_HOME /usr/local/apache-tomcat-8.0.
ENV CATLINA_BASE /usr/local/apache-tomcat-8.0.
ENV PATH $PATH:$JAVA_HOME/bin:$CATLINA_HOME/lib:$CATLINA_HOME/bin #公开端口
EXPOSE
#设置启动命令,启动Tomcat
#CMD /usr/local/apache-tomcat-8.0./bin/startup.sh && tail -f /usr/local/apache-tomcat-8.0./bin/logs/catalina.out
ENTRYPOINT ["/usr/local/apache-tomcat-8.0.53/bin/catalina.sh","run"]

5.构建镜像

#使用当前路径下的Dockerfile文件构建镜像,如果我们定义的Dockefile文件名字不是默认的“Dockefile”,则需要-f 指定文件路径和名字
docker build -t zxp/tomcat_by_z .

...

上图显示了构建的各个步骤,最后显示成功

6.使用docker images查看创建好的镜像,zxp/tomcat_by_z即为我们自己构建的镜像

7.通过构建的zxp/tomcat_by_z镜像,启动一个容器,并挂载test数据目录和logs日志目录

docker run -d -p : --name mytomcat001 -v /usr/local/mydockerself/tomcat8/test:/usr/local/apache-tomcat-8.0./webapps/test -v /usr/local/mydockerself/tomcat8/logs:/usr/local/apache-tomcat-8.0./logs --privileged=true zxp/tomcat_by_z

8. 查看启动的容器

9.通过网址访问启动的tomcat容器

可以正常访问,说明一切ok。如果以后想部署网址,可以通过宿主机挂载的test数据目录进行部署。

10.如果我们想进入容器内,可以通过以下命令进入。

#e3d0f30a3ecd为要进入的容器id
docker exec -it e3d0f30a3ecd /bin/bash

可以看到,默认进入的目录,就是我们设置的默认工作目录/usr/local

使用Dockerfile自定义一个包含centos,tomcat的镜像的更多相关文章

  1. 利用Dockerfile构建一个基于CentOS 7镜像

    利用Dockerfile构建一个基于CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像. Dockerfile内容如下: FROM centosMAINTA ...

  2. 利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像

    Dockerfile内容如下: FROM centos MAINTAINER Victor ivictor@foxmail.com WORKDIR /root RUN rm -f /etc/yum.r ...

  3. Docker使用Dockerfile创建Centos(tomcat+jdk)镜像

    原文链接:https://blog.csdn.net/qq_37936542/article/details/80824389 Docker构建镜像的方法主要有两种:    (1)使用docker c ...

  4. 创建一个包含TC的Alpine镜像

    镜像的创建 更换镜像至ustc(为了测试时的速度) 安装musl-dev make gcc linux-headers bison flex以使TC可以编译 拷贝进TC的源代码 进入源代码文件夹进行编 ...

  5. docker Dockerfile学习---nginx负载均衡tomcat服务

    1.此过程在nginx的基础上,也就是上篇博客写的内容. 2.创建项目目录并上传包,解压 $ mkdir centos_tomcat $ cd centos_tomcat $ tar zxvf jdk ...

  6. 使用Dockerfile文件构建基于centOS系统的tomcat镜像

    以下是Dockerfile的内容: #基础镜像 FROM centos #维护人员信息 MAINTAINER weigs "weigs1231@gmail.com" #设置工作目录 ...

  7. 数据结构和算法之栈和队列三:自定义一个栈包含min函数

    我们都知道一个栈的特点是后进先出,如果我们要实现在O(1)的时间内找到一个栈里面的最小值,我们应该怎么解决?如果我们采用遍历获取的思路那必然所需要的时间是O(N)与我们所需要的要求明显不符合,这时候我 ...

  8. DOCKER 学习笔记2 认识dockerfile自定义镜像

    Dockerfile 概念 Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数.库.资源配置.可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时 ...

  9. 对于Servlet、Servlet容器以及一个Servlet容器-Tomcat

    Servlet.Servlet容器等内容讲解 转载自http://blog.csdn.net/iAm333 对于Servlet.Servlet容器以及一个Servlet容器-Tomcat这些概念讲解的 ...

随机推荐

  1. 关于使用format()方法格式化字符串,读这一篇就够了!

    从Python 2.6开始,又出现了另外一种格式化字符串的方法——format()方法.format()方法是字符串众多方法中的一个,调用这个方法时要使用点操作符(.),该方法返回一个格式化好的字符串 ...

  2. rocketmq(三 java操作rocket API, rocketmq 幂等性)

    JAVA操作rocketmq: 1.导入rocketmq所需要的依赖: <dependency> <groupId>com.alibaba.rocketmq</group ...

  3. Android中刷新Invalidate和postInvalidate的区别

    Android中实现view的更新有两组方法,一组是invalidate,另一组是postInvalidate,其中前者是在UI线程自身中使用,而后者在非UI线程中使用.Android提供了Inval ...

  4. 新手必备|常见30种NLP任务的练手项目(文末福利)

    1.分词 Word Segmentationchqiwang/convseg ,基于CNN做中文分词,提供数据和代码. 2.词预测 Word PredictionKyubyong/word_predi ...

  5. js 合并多行表格

    最近在整理之前的工作记录,有很多信息是借鉴他人,亲测有效的,遗憾的是当初记录时没有留下来源,如侵权请联系fourOfour@163.com. 1.autoRowSpan函数的第一个参数是table的i ...

  6. vue-cli · Failed to download repo vuejs-templates/webpack: connect ETIMEDOUT 13.229.188.59:443

    初始化vue项目 vue init webpack vue-demo 之后 一直报vue-cli · Failed to download repo vuejs-templates/webpack: ...

  7. Redis深入学习笔记(二)client list 命令详解

    Redis的client list 命令可以获取当前连接到redis server端的所有客户端以及相关状态,本篇主要介绍每一个参数的作用. clisnt list 命令输出结果如下: (1)标识:i ...

  8. Oracle列自增-12c

    在ORACLE 12C以前的版本中,如果要实现列自增长,需要通过序列+触发器实现,到了12C ORACLE 引进了Identity Columns新特性,从而实现了列自增长功能. 一.Identity ...

  9. WPF常用TriggerAction用法 (一)

    Microsoft.Expression.Interactivity 常用TriggerAction-> CallMethodAction ChangePropertyAction Contro ...

  10. c语言函数参数类似继承的传递

    函数的参数如果是一个父结构的指针, 这个结构包含在另一个子结构中, typedef struct test_node_one test_node_one_t; typedef struct test_ ...