持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情
1.写在前面
很多时候,我们的服务,要使用云原生部署,那就少不了与docker
镜像打交道。
一般来说,我们的springboot
项目,打成docker镜像包,也是很方便了。一个Dockerfile
文件就搞定的事。
那我们的springboot
项目,运行需要jdk环境,那我们的基础镜像,就应该是一个有jdk
环境的docker
镜像。
所以我们今天来讲讲,如何制作一个jdk
基础docker镜像包。
当然,我们也可以上docker hub
仓库,直接拉别人制作好的镜像包。
例如这些:docker hub地址
- 执行pull命令:
- pull成功的结果如下:
这里,要注意
hub
仓库上面的226.01MB
,但最终的size
是526MB
这是因为
hub
仓库会经过压缩处理,最终的大小以pull
下来的size
为准。
2.jdk的tag说明
openjdk:8u201-jre-alpine3.9(表示jre环境)
openjdk:8u201-jdk-alpine3.9(表示jdk环境)
alpine
关键字
以openjdk:8u201-jre-alpine3.9
这个tag为例,表明镜像的操作系统是alpine linux
,alpine
镜像的大小是5M
左右,因此以alpine
作为基础镜像构建出的openjdk
镜像也很小。
openjdk:8u312-slim
slim
关键字
以openjdk:8u312-slim
这个tag为例,表明当前的jre
并非标准jre
版本,而是headless
版本,该版本的特点是去掉了UI、键盘、鼠标相关的库,因此更加精简,适合服务端应用使用,官方的建议是除非有明确的体积限制是再考虑使用该版本。
openjdk:18-ea-jdk
ea
关键字
以openjdk:18-ea-jdk
这个tag为例,ea的意思是Early Access
,这里代表jdk18
正是发布之前的预览版
本,该版本带有新特性并且修复了若干bug
,但毕竟是预览版
,质量还未达到release
要求,不推荐生产环境使用。
3.制作自己的jdk镜像
上面说到,我们可以拉别人制作好的镜像,但今天,咋们还是自己来搞一把。
毕竟自己折腾一下,能加深我们的印象,也能提高我们的技能,我们,也能自己制作镜像。
3.1 Dockerfile
FROM centos:centos7
ADD jdk-8u201-linux-x64.tar.gz /opt/soft/
ENV JAVA_HOME /opt/soft/jdk1.8.0_201
ENV CLASSPATH .:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
ENV PATH $JAVA_HOME/bin:$HOME/bin:$HOME/.local/bin:$PATH
CMD ["java","-version"]
复制代码
基础镜像,我们选择centos7
centos:centos7
jdk-8u201-linux-x64.tar.gz
是我们在jdk官网下载的jdk包
这里要说明一下:
x64
,i586
(适合linux
内核是amd
的,例如:centos、window)
arrch64
,arm
(适合linux
内核是arm
的,例如:有些unbntu)
可能说得不是很对,轻点喷!!!
3.2 build.sh
- 执行命令构建,并push到自己的
harbor
仓库
docker build -t llsydn:jdk8 -f ./Dockerfile .
docker push llsydn:jdk8
docker rmi llsydn:jdk8
复制代码
执行
./build.sh
复制代码
好了,以上就是我个人的实操了。
个人理解,可能也不够全面,班门弄斧了。
好了,今天就先到这里了!!!^_^
如果觉得有收获的,帮忙点赞、评论、收藏
一下呗!!!