专栏首页实战dockeropenjdk镜像的tag说明

openjdk镜像的tag说明

先来聊聊为什么会用到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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android 中arm64-v8a、armeabi-v7a、armeabi、x86简介~

    LZ是一名96年Android小生,从14年9月培训出来到现在,差不多俩年多的时间,由于一些原因,没能好好把技术提升一下,实乃不该啊。

    HLQ_Struggle
  • SCF-Python依赖小工具

    Hi,各位小伙伴,近期我也写过一个关于如何打包Python依赖的小文章:https://cloud.tencent.com/developer/article/...

    Dfounderliu
  • Linux-网卡命名方式改变了-enp0s3,enp0s8

    版权声明:可以转载,请标明作者和来源。原创首发http://kakazai.cn https://...

    zy010101
  • Linux内核中文件的数据结构和原子操作

    版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/z...

    zy010101
  • python/shell脚本报异常^M: bad interpreter: No such file or directory

    问题: 在Windows写了一python脚本,上传Linux服务器执行,报异常*****^M: bad interpreter: No such file o...

    流柯
  • redis 学习(20)-- 常见的持久化开发与运维问题

    Redis在执行 fsync 的时候,redis 为了保证 AOF 文件安全性,会校验上次 fsync 的时间是否大于2秒。若超过2秒,会发生阻塞。

    希希里之海
  • JavaScript正则表达式进阶指南

    例如,正则表达式/F.*g/会匹配“以F开头,以g结尾的字符串”,因此可以匹配"Hello, Fundebug!"中的Fundebug,exec方法会返回一个数...

    Fundebug
  • 做 Java 或者 C++ 开发都应该知道的 lsof 命令

    lsof 命令是 Linux 系统的扩展工具,它的含义是 list opened filedesciptor (列出已经打开的文件描述符),在 Linux 系统...

    范蠡
  • Docker命令详解

    版权声明:欢迎交流,菲宇运维! https://blog.csdn.net/bbwangj/art...

    菲宇
  • Kali Linux + Windows10双系统安装教程

    1.kali2.0镜像文件 - 下载地址:https://www.kali.org/downloads/

    南山南的杨先生

扫码关注云+社区

领取腾讯云代金券