基于官方提供的centos 7.2.1511 基础镜像构建JDK 和tomcat 镜像,先构建JDK镜像,然后在基于JDK镜像构建tomcat镜像

构建 centos:latest 基础镜像:

# 下载基础镜像JDK:
docker pull centos # 执行构建JDK镜像:
mkdir -pv /opt/dockerfile/{web/{nginx,tomcat,jdk.apache},system/{centos,ubuntu,redhat}} # 清除<none> 类型的镜像:
1 )确认: docker images | grep "<none>" | awk '{print $3}'
2 )删除: docker rmi `docker images | grep "<none>" | awk '{print $3}'` # 打一个基础镜像:
docker tag centos:latest centos:7.6.1810 # 编写Dockerfile:
vim dockerfile from centos:7.6.1810 RUN yum install epel-release -y && yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \
pcre-devel openssl openssl-devel zip unzip zlib-devel netols \
lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel \
bc systemd-devel bash-completion traceroute -y RUN useradd nginx -u 2019 && useradd tomcat -u 2020 RUN rm -rf /etc/localtime && ln -sv /usr/share/javazi/Asia/Shanghai /etc/localtime # 构建一个基础镜像:
docker build -t centos-base:v1 . # 查看一个镜像有几层:
docker images history 镜像ID

构建Jdk-Base 基础版本:

# 创建JDK版本images:
vim Dockerfile # For JDK Base
FROM centos-base:v1 # 这个根据自己的镜像来决定
MAINTAINER 57674891@qq.com ADD jdk-8u192-linux-x64.tar.gz /usr/local/src
RUN ln -sv /usr/local/src/jdk1.8.0_192 /usr/local/jdk ADD profile /etc/profile ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/LIB/
ENV PATH $PATH:$JAVA_HOME/bin # 构建JDK镜像:
vim docker_build.sh docker build -t jdk-base:1.8.0.192 .

构建tomcat-base 镜像:

# 创建tomcat-base镜像
cd /opt/dockerfile/web/tomcat
wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz # 创建dockfile文件:
vim Dockerfile FROM jdk-base:1.8.0.192
MAINTAINER 57674891@qq.com RUN test -d /data/soft || mkdir -p /data/soft
RUN test -d /data/www || mkdir -p /data/www
ADD apache-tomcat-8.5.39.tar.gz /data/soft
RUN ln -svf /data/soft/apache-tomcat-8.5.39 /data/soft/tomcat
RUN chown -R tomcat.tomcat /data/soft/tomcat /data/soft/apache-tomcat-8.5.39 /data/www/ # 构建JDK镜像:
vim docker_build.sh docker build -t tomcat-base:8.5.39 . # 根据镜像创建容器:
docker run -ti --rm tomcat-base:8.5.39 bash

构建tomcat-app1 镜像:

# 创建tomcat-app1 镜像:

FROM centos-base:v1

ADD jdk-8u192-linux-x64.tar.gz /usr/local/src
RUN ln -sv /usr/local/src/jdk1.8.0_192 /usr/local/jdk ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre/
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/LIB/
ENV PATH $PATH:$JAVA_HOME/bin
ADD profile /etc/profile RUN rm -rf /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone ###################################################################
# 运行脚本 docker_build.sh,构建镜像: #!/bin/bash
docker build -t jdk-base:1.8.0.192 . ################################################################### # 测试构建的镜像是否可以正常运行:
[root@node-2 tomcat-app1]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat-app1 v1 642ebdce8a40 About a minute ago 964MB
tomcat-base 8.5.39 507bbd514fc5 2 minutes ago 950MB ## 前台交互的方式测试一下镜像:
[root@node-2 tomcat-app1]# docker run -ti --rm -p 8080:8080 tomcat-app1:v1
10.10.5.136 hostname is start
Using CATALINA_BASE: /data/soft/tomcat
Using CATALINA_HOME: /data/soft/tomcat
Using CATALINA_TMPDIR: /data/soft/tomcat/temp
Using JRE_HOME: /usr/local/jdk/jre
Using CLASSPATH: /data/soft/tomcat/bin/bootstrap.jar:/data/soft/tomcat/bin/tomcat-juli.jar
Tomcat started.
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 8ef11a979732 ## 验证是否正常运行:
[root@node-2 tomcat-app1]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
41bc8227215b tomcat-app1:v1 "/data/soft/tomcat/b…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, 8443/tcp funny_lalande ## 访问一下页面:
[root@node-2 tomcat-app1]# curl -I 127.0.0.1:8080/app1
HTTP/1.1 302
Location: /app1/
Transfer-Encoding: chunked
Date: Mon, 20 Jul 2020 10:59:33 GMT http://IP:8080/app1

快速构建 tomcat-app2

cd /opt/dockerfile/web/tomcat
cp -r tomcat-app1 tomcat-app2 # 修改文件内容:
1 code.tar.gz 内容要最新的
2
vim docker_build.sh
docker build -t tomcat-app2:v1 . 3 修改dockerfile:
vim Dockerfile FROM tomcat-base:8.5.39
maintainer 57674891@qqcom RUN test -d /data/www/webapps/app2 || mkdir -p /data/www/webapps/app2
ADD code.tar.gz /data/www/webapps/app2
ADD server.xml /data/soft/tomcat/conf
ADD run_tomcat.sh /data/soft/tomcat/bin/ RUN chown -R tomcat.tomcat /data/soft/* /data/www/webapps/app2 EXPOSE 8080 8443 CMD ["/data/soft/tomcat/bin/run_tomcat.sh"] 4 打包文件:
tar -zcvf code.tar.gz index.html 5 构建docker镜像:
sh docker_build.sh 6 测试镜像:
docker run -ti -p 8080:8080 --rm 镜像ID bash 7 访问页面:
http://10.10.5.136:8080/app2/index.html # 以上重新就构建出来了一套新的业务应用

提示- 境变量很重要:

# 1 ) Dockerfile 里面的环境变量很重要,一定要在tomcat-base 基础的镜像完成之后 测试一下 镜像是否可以正常运行:
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre/
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/LIB/
ENV PATH $PATH:$JAVA_HOME/bin
ADD profile /etc/profile # 2 ) JDK-base 打镜像的就要 一起设置 2种变量 /etc/profile 和 Dockerfile 里面的 ENV 变量
......
vim profile export JAVA_HOME=/usr/local/jdk
export JRE_HOME=/usr/local/jdk/jre
export TOMCAT_HOME=/data/soft/tomcat
export PATH=$JAVA_HOME/bin/:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

Docker Java 镜像基础(四)的更多相关文章

  1. [Java反射基础四]通过反射了解集合泛型的本质

    本文接上文"方法反射的基本操作",利用反射了解下java集合中泛型的本质 1.初始化两个集合,一个使用泛型,一个不使用 ArrayList list1 = new ArrayLis ...

  2. java面向对象基础(四):抽象类和接口

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  3. Docker多步构建更小的Java镜像

    译者按: 最新版Docker将支持多步构建(Multi-stage build),这样使用单个Dockerfile就可以定义多个中间镜像用于构建,测试以及发布等多个步骤,并且有效减小最终镜像的大小. ...

  4. docker java环境 直接做成镜像 跑自己的java包

    yum install docker #基于阿里源 可以直接下载 systemctl restart docker ifconfig  #出现 docker0  说明环境部署成功 docker ver ...

  5. Docker 封装java镜像

    一.概述 目前java采用的框架是Spring,服务器直接通过 java -jar xxx.jar 就可以启动服务了. 二.jdk镜像 在docker中跑java应用,需要有jdk环境支持才行. 获取 ...

  6. Docker Java程序镜像制作

    Docker Java程序镜像制作 制作前的准备 jre:不需要完整的jdk,jre即可,到Oracle进行下载即可,下载链接,根据自己的情况进行选择,这里选择jre-8u221-linux-x64. ...

  7. docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储

    前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...

  8. Java语言基础(四)

    Java语言基础(四) 一.基本数据类型(8) byte  8位  使用较少,一般用于网络传输: -128-+127 short  16位 不常用 -32768-+32767 int  32位 常用  ...

  9. Docker应用系列(四)| 部署java应用

    本示例基于Centos 7,假设目前使用的账号为release,拥有sudo权限. 由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速器,可参考此文进行配置. 主机上服务安装步 ...

随机推荐

  1. dp斜率优化

    算法-dp斜率优化 前置知识: 凸包 斜率优化很玄学,凭空讲怎么也讲不好,所以放例题. [APIO2014]序列分割 [APIO2014]序列分割 给你一个长度为 \(n\) 的序列 \(a_1,a_ ...

  2. Linux相关知识基础

    目录 前言 第一章 Linux远程连接管理 1. 为什么要远程连接Linux系统 2. 连接前的小知识 2.2.1 IP地址 2.2.2 端口的概念 2.2.3 协议的概念 3. 远程连接Linux的 ...

  3. Jmeter(9)常用定时器

    测试计划中元件的执行顺序依次为: 配置元件--逻辑控制器--前置处理器--定时器--取样器--后置处理器--断言--监听器 一.定时器作用域 1.定时器是在每个取样器之前执行的,无论定时器是在取样器之 ...

  4. RocketMQ(六):nameserver队列存储定位解析

    在rocketmq中,nameserver充当了一个配置管理者的角色,看起来好似不太重要.然而它是一个不或缺的角色,没有了它的存在,各个broker就是一盘散沙,各自为战. 所以,实际上,在rocke ...

  5. 浏览器小程序(Browser Applet)闪亮登场

    2017 年 1 月 9 日,微信小程序横空出世.随后,支付宝小程序.今日头条小程序.百度智能小程序.360小程序等纷纷推出,自此国内软件功能扩展领域进入到了小程序时代,小程序为丰富其宿主软件的功能和 ...

  6. Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

    1. 主从复制解释   将主数据库的增删改查等操作记录到二进制日志文件中,从库接收主库日志文件,根据最后一次更新的起始位置,同步复制到从数据库中,使得主从数据库保持一致. 2. 主从复制的作用 高可用 ...

  7. 求求你,别再用wait和notify了!

    Condition 是 JDK 1.5 中提供的用来替代 wait 和 notify 的线程通讯方法,那么一定会有人问:为什么不能用 wait 和 notify 了? 哥们我用的好好的.老弟别着急,听 ...

  8. Jmeter +Maven+jenkins+eclipse 接口自动化测试

    背景: 首先用jmeter录制或者书写性能测试的脚本,用maven添加相关依赖,把性能测试的代码提交到github,在jenkins配置git下载性能测试的代码,配置运行脚本和测试报告,配置运行失败自 ...

  9. Clickhouse的特点

    1.为什么会有Clickhouse? 实时数据分析数据库 俄罗斯的谷歌开发的. 2.Clickhouse的优点. 真正的面向列的 DBMS ClickHouse 是一个 DBMS,而不是一个单一的数据 ...

  10. Python之word文档模板套用 - 真正的模板格式套用

    Python之word文档模板套用: 1 ''' 2 #word模板套用2:套用模板 3 ''' 4 5 #导入所需库 6 from docx import Document 7 ''' 8 #另存w ...