# 前言
在近期的基于阿里云效Codeup部署中,通过对于流水线的分析和学习。项目的构建需要依赖于一些基础的容器镜像,搭建一套自己的基础镜像可以很好地在后续的开发中使用。话不多说,以基础的jdk8镜像为例。
# 一、构建准备
# 1.构建材料
1.阿里云——容器镜像服务——实例列表(个人版):
- 准备一个命名空间
- 新建一个镜像仓库
- 根据阿里提供的《操作指南》在linux中登录阿里云Docker Registry
2.Oracle官网的Jre-server Java Downloads | Oracle 中国 (opens new window) 3.准备一个DockerFile
# 使用CentOS 7作为基础镜像
FROM centos:7
# 安装Java JDK 8
# 假设server-jre-8u411-linux-x64.tar.gz已经在当前目录下
# 将JDK添加到镜像中
ADD server-jre-8u411-linux-x64.tar.gz /opt/
# 设置环境变量
ENV JAVA_HOME /opt/jdk1.8.0_411
ENV PATH $PATH:$JAVA_HOME/bin
# 可选:设置工作目录
WORKDIR /app
# 可选:暴露端口,如果需要的话
# EXPOSE 8080
# 可选:运行命令,如果需要的话
CMD ["java", "-version"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 二、构建
# 1.构建镜像
docker build -t image_name:image_tag .
# 2.启动容器
docker run -it --name my-jdk8-container my-jdk8-image 这里能够看到java version出来就说明容器构建没问题。
# 三、推送至个人仓库
这里按照官方的《操作指南》即可,出现size统计和pushed等字样表示推送成功。 同时,我们可以回到阿里云的官方控制台中看到对应的镜像信息。
# 四、特别说明(JDK与JRE的区别)
# 1.一句话概括JDK与JRE
JDK是Java的开发工具,它不仅提供了Java程序运行所需的JRE,还提供了一系列的编译,运行等工具,如javac,java,javaw等。 JRE只是Java程序的运行环境,它最核心的内容就是JVM(Java虚拟机)及核心类库。
# 2.JRE选用理由
- 减小镜像大小:一个JRE在50M左右,而一个JDK在130M左右。JDK比JRE多出来的编译器、调试器等开发工具与运行java应用程序时并不是必须的。减小镜像大小可以加快镜像的构建和部署速度,节省存储空间和网络传输的时间。
- 资源利用率:JRE占用的系统资源较少,有助于提高容器的性能和效率,特别是在资源有限的情况下。
- 明确构建与运行环境的区别:开发阶段使用JDK进行代码开发和测试,在生产阶段用JRE来运行。可以确保生产环境只包含运行时真正需要的组件,避免了开发工具带来的额外开销。