一、docker现有java jdk 或 jre镜像

1、使用命令

docker pull java:<tag>

2、常用tag

如果要求最终的应用镜像尽可能的小,你应该使用alpine。使用alpine作为基础镜像,然后你可以在Dockerfile中添加想要的东西。
Alpine使用apk命令进行安装。使用Alpine运行的容器,如果需要进入容器内部,需要使用docker exec -it 镜像id /bin/sh命令

  • 6b38-jdk, 6b38, 6-jdk, 6, openjdk-6b38-jdk, openjdk-6b38, openjdk-6-jdk, openjdk-6
  • 6b38-jre, 6-jre, openjdk-6b38-jre, openjdk-6-jre
  • 7u111-jdk, 7u111, 7-jdk, 7, openjdk-7u111-jdk, openjdk-7u111, openjdk-7-jdk, openjdk-7
  • 7u121-jdk-alpine, 7u121-alpine, 7-jdk-alpine, 7-alpine, openjdk-7u121-jdk-alpine, openjdk-7u121-alpine, openjdk-7-jdk-alpine, openjdk-7-alpine
  • 7u111-jre, 7-jre, openjdk-7u111-jre, openjdk-7-jre
  • 7u121-jre-alpine, 7-jre-alpine, openjdk-7u121-jre-alpine, openjdk-7-jre-alpine
  • 8u111-jdk, 8u111, 8-jdk, 8, jdk, latest, openjdk-8u111-jdk, openjdk-8u111, openjdk-8-jdk, openjdk-8
  • 8u111-jdk-alpine, 8u111-alpine, 8-jdk-alpine, 8-alpine, jdk-alpine, alpine, openjdk-8u111-jdk-alpine, openjdk-8u111-alpine, openjdk-8-jdk-alpine, openjdk-8-alpine
  • 8u111-jre, 8-jre, jre, openjdk-8u111-jre, openjdk-8-jre
  • 8u111-jre-alpine, 8-jre-alpine, jre-alpine, openjdk-8u111-jre-alpine, openjdk-8-jre-alpine
  • 9-b149-jdk, 9-b149, 9-jdk, 9, openjdk-9-b149-jdk, openjdk-9-b149, openjdk-9-jdk, openjdk-9
  • 9-b149-jre, 9-jre, openjdk-9-b149-jre, openjdk-9-jre

二、Dockerfile制作

1、Dockerfile

FROM java:8-jre-alpine
# 设置时区
RUN apk update \
	&& apk add -U tzdata \
	&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
	&&  apk del tzdata
# 工作目录
WORKDIR /init
VOLUME /init
# 将jar包导入进去
ADD ./*.jar app.jar
# 执行
ENTRYPOINT ["java","-jar","app.jar"]

2、执行命令打包镜像

java:8-jre-alpine的镜像打包出来大约在100M左右,后续根据导入的jar的大小进行增加

docker build -t javajre:8 .

三、自定义制作Java运行镜像

1、jre下载地址
https://www.java.com/en/download/manual.jsp
下载*.tar.gz
使用命令解压

tar -zxvf jre-8u161-linux-x64.tar.gz

2、Dockerfile

FROM centos:centos7
# 将解压的jre导入进去, 可针对需求对jre文件进行选择性导入
ADD . /usr/java/jdk/
# 设置环境变量
ENV JAVA_HOME /usr/java/jdk

ENV PATH ${PATH}:${JAVA_HOME}/bin

WORKDIR /opt

ENTRYPOINT java -version

也可以使用ADD jre8.tar.gz /usr/java/jdk/这样让docker自己解压的方式构建镜像,但是这样需要运行权限命令:

RUN /bin/sh -c ‘chmod 777 /usr/java/jdk -R’

否则会报权限不足的问题。

但这样打出来的包会更大一点,因为多构建了一层

3、打包镜像并执行

docker build -t javacentos:8 . # 制作镜像
docker run --name myjava javacentos:8 # 启动容器

java version "1.8.0_281"

Java(TM) SE Runtime Environment (build 1.8.0_281-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐