以centos7镜像为基础构建一个jdk8和tomcat7的镜像

首先我简单说一下容器的一些知识点

  • 一个容器只跑一个进程,并且该进程只能前台运行。
  • 容器有层的概念,如果需要定制容器,应该尽量通过Dockerfile来构建容器。
    什么是 Dockerfile
  • Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FROM centos:7 
MAINTAINER samdockerdeveloper
RUN mkdir -p /usr/local/tomcat7 \
&&mkdir -p /usr/local/jdk8
WORKDIR /usr/local/src/
COPY apache-tomcat-7.0.99.zip /usr/local/src/
COPY jdk-8u131-linux-x64.tar.gz /usr/local/src/
RUN yum update -y \
&&yum install -y unzip \
&&unzip apache-tomcat-7.0.99.zip \
&&cp -R apache-tomcat-7.0.99/* /usr/local/tomcat7 \
&&chmod +x /usr/local/tomcat7/bin/*.sh \
&&tar -xf jdk-8u131-linux-x64.tar.gz -C /usr/local/jdk8 --strip-components 1
ENV JAVA_HOME /usr/local/jdk8 \
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar \
ENV CATALINA_HOME /usr/local/tomcat7 \
ENV CATALINA_BASE /usr/local/tomcat7 \
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
ENTRYPOINT ["/usr/local/tomcat7/bin/catalina.sh","run"]

在Dockerfile同级目录里存放已经下载好的apache-tomcat-7.0.99.zip、jdk-8u131-linux-x64.tar.gz。

注意:Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:

1
2
3
4
5
6
7
8
9
FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上执行会创建 3 层镜像。可简化为以下格式:
FROM centos
RUN yum install wget \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& tar -xvf redis.tar.gz

如上,以 && 符号连接命令,这样执行后,只会创建 1 层镜像。

开始构建镜像

在 Dockerfile 文件的存放目录下,执行构建动作。

以下示例,通过目录下的 Dockerfile 构建一个 samjavawebenv:v2(镜像名称:镜像标签)。

:最后的 . 代表本次执行的上下文路径

1
2
# docker build -t  name:tag  .
docker build -t samjavawebenv:v2 .
  • 作者: Sam
  • 发布时间: 2020-01-04 23:22:55
  • 最后更新: 2020-01-05 11:14:41
  • 文章链接: https://ydstudios.gitee.io/post/97b746d3.html
  • 版权声明: 本网所有文章除特别声明外, 禁止未经授权转载,违者依法追究相关法律责任!