docker基础镜像java版本选择和推荐
背景
在编写dockerfile时,基础镜像要么太大,要么缺少jdk;dockerhub中的openjdk五花八门,不知道选择哪个
解决方案
我在项目中通常选择 openjdk作为基础镜像
FROM openjdk:11.0.11-jdk-slim
MAINTAINER mintonzhang@163.com
ENV TZ=Asia/Shanghai
RUN echo -e "${TZ}" > /etc/timezone && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime
以上是官方镜像 https://registry.hub.docker.com/_/openjdk
这个镜像比较全,而且有jre也有jdk,架构也全。
什么时候使用jdk,什么时候使用jre
jdk: 下载时会占用比较大的空间(大概多了100多M),但是如果项目中接入了Arthas(阿里在线java调试)时,必须要使用jdk,不然会报错。
jre:空间小,绝大部分项目都能正常使用
不过,还是要自行测试,再决定使用哪个
存在的坑
- oracleJDK存在闭源的情况,dockerhub貌似没有官方的jdk,大部分都是个人制作上传。除非是自己编写的,否则最好不要使用,可能存在风险。
- 不同的基础镜像,配置时区存在很大的差别,有的配置非常复杂,有的非常简单。
- jdk和jre的区别