基于官方提供的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. Linux相关知识基础

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

  2. Maven基础知识详解

    1. 简介   Maven在Java领域的应用已经非常广泛了,有了Maven的存在是的开发人员在搭建.依赖.扩展和打包项目上变得非常简单. 2. Windows安装Maven 下载安装包   http ...

  3. 马赛克密码破解——GitHub 热点速览 Vol.50

    作者:HelloGitHub-小鱼干 "xx"(爆粗口) 这个词是最能体现本人看到本周 GitHub 热点的心情的.那一天,看到用图片处理技术还原马赛克密码的 Depix 便惊为天 ...

  4. Flink连接器-批处理-读写Hbase

    Flink批处理与hbase的读写 source-hbase 父类 是模仿官方写的. import org.apache.flink.api.common.io.LocatableInputSplit ...

  5. matplotlib的学习9-bar柱状图

    import matplotlib.pyplot as plt import numpy as np ''' 向上向下分别生成12个数据,X为 0 到 11 的整数 ,Y是相应的均匀分布的随机数据. ...

  6. 太酷炫了!!我会Python 导包八种方法,你呢?

    1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...

  7. CentOS7 实战部署tomcat网站服务器

    简介:实战演练tomcat网站服务器的搭建 Tomcat:是一个开源免费的Web应用服务器,性能稳定,是目前比较流行的Web应用服务器   tomcat官网下载: https://tomcat.apa ...

  8. Ext CheckBoxGroup使用

    一.效果图展示 我这里主要是为了实现选择周期时间.如周一.周二.周三等 二.界面界面代码 下面就是我实现的代码,包含了界面.数据处理.回填数据等.可能架构的方式,您的代码和我的代码有差异,但是大体就是 ...

  9. 记录第一次使用Vivado——以全加器为例子

    从altera转战xilinx,经典的FPGA到ZYNQ系列,第一站就是先熟悉编译软件Vivado.我就直接跳过软件安装部分了,如有疑问,可以在评论区提出来,我看到了就帮你解答. 首先是是打开界面 然 ...

  10. Access denied for user ''@'localhost' to database 'mysql'问题

    Access denied for user ''@'localhost' to database 'mysql'问题 MySQL : Access denied for user ''@'local ...