写点什么

openjdk 镜像的 tag 说明

作者:程序员欣宸
  • 2022 年 9 月 28 日
    广东
  • 本文字数:1115 字

    阅读完需:约 4 分钟

openjdk镜像的tag说明

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


  • 先来聊聊为什么会用到 openjdk 镜像。

关于 java 应用的 docker 镜像

  • 将 java 应用作成 docker 镜像时,需要镜像中带有 jdk 或者 jre 环境,通常有三种情况:


  1. 在 Dockerfile 中加入安装 jdk 环境的脚本;

  2. 镜像中只有应用 jar 包,启动容器时通过数据卷映射(-v 参数)将宿主机的 jdk 文件夹映射到容器内;

  3. 使用带有 jdk 的镜像作为基础镜像;

三种方式各有优劣

  • 上述三种方式各有优劣:

  • 第一种,完全自己动手,可控性强,但增加了 Dockerfile 编写的工作量,脚本质量要自己保证;

  • 第二种,要求宿主机预先部署 jdk,增加了宿主机工作量;

  • 第三种,相对工作量小一些,如果找的基础镜像不合适,会导致做成的镜像体积过大,或者多了些不需要的内容;

  • 今天要聊的话题,就是如果使用第三种方式镜像选择怎么选;

基础镜像的选择

  • 去 hub.docker.com 上搜索 jdk 官方镜像,关键字 openjdk ,可以搜到官方镜像,点进详情页后寻找我们常用的 jdk8 的镜像,发现有很多个,如下图:


  • 如此多的的 tag,我们又该如何选择呢,接下来就来分析一下吧;

stretch 关键字

  • 8-jre-stretch 这个 tag 为例,其中的 stretch 表明这个镜像的操作系统是 debian9,这是 debian 的一个稳定版本,官方信息如下,地址是:https://wiki.debian.org/DebianStretch


  • 类似的标签还有 jessie ,这是 debian 的上一个稳定版本:


alpine 关键字

  • 13-ea-19-jdk-alpine3.9 这个 tag 为例,其中的 alpine 表明镜像的操作系统是 alpine linux,alpine linux 本身很小,alpine 镜像的大小是 5M 左右,如下图,因此以 alpine 作为基础镜像构建出的 openjdk 镜像也很小:

oraclelinux7 关键字

  • 13-ea-oraclelinux7 这个 tag 为例,其中的 oraclelinux7 表明镜像的操作系统是 Oracle Linux 7,从 jdk12 开始,openjdk 官方开始提供基于 Oracle Linux 7 的 jdk 镜像;

slim 关键字

  • 8-jre-slim 这个 tag 为例,其中的 slim 表明当前的 jre 并非标准 jre 版本,而是 headless 版本,该版本的特点是去掉了 UI、键盘、鼠标相关的库,因此更加精简,适合服务端应用使用,官方的建议是除非有明确的体积限制是再考虑使用该版本;

ea 关键字

  • 13-ea-19-jdk-alpine3.9 这个 tag 为例,其中的 ea 的意思是"Early Access",这里代表 jdk13 正是发布之前的预览版本,该版本带有新特性并且修复了若干 bug,但毕竟是预览版,质量还未达到 release 要求,不推荐生产环境使用;

  • 至此,常见的 tag 关键字已经弄清楚了,在您面对各种 tag 的官方镜像时,希望本文能给您提供一些参考,更多详情请参考官方文档:https://github.com/docker-library/docs/blob/d4f015a4a99883c6b8691ec6aaf24a74cd02916a/openjdk/README.md

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 刚刚阅读数: 4
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
openjdk镜像的tag说明_Docker_程序员欣宸_InfoQ写作社区