docker 下载java-jdk
本文已参与「新人创作礼」活动, 一起开启掘金创作之路
背景: 由于电脑上mac-m1芯片的,且在mac装的虚拟机安装也只支持aarch64版(目前),所以安装jdk就出现各种和版本不适配的问题,下载各种版本都不支持,无奈只好通过Dockerfile的方式解决
1. 下载支持aarch64的jdk
下载jdk-8u301-linux-aarch64.tar.gz (该版本支持运行)
下载地址:支持aarch64的jdk版本
文末可以获取提取码1
2.配置Dockerfile前的准备工作
- 可以在虚拟机上新建一个文件夹,将文件放在该目录下(我新建的目录是:
/usr/local/jdk
,仅供参考,大家可根据自己喜好新建) - 通过
rz
指令将下载好的jdk-8u301-linux-aarch64.tar.gz上传到/usr/local/jdk
目录下并解压tar -zxvf jdk-8u301-linux-aarch64.tar.gz
,同时在该目录下创建Dockerfile文件touch Dockerfile
如图:
3.配置Dockerfile
1. vi Dockerfile
将配置指令写入该文件中如下:
FROM centos:8
ADD jdk-8u301-linux-aarch64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_301
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
[指令讲解]:
- FROM centos:8 基于cntos8,如果没有这个镜像那么它会下载这个镜像,这个必须写,而且必须是写虚拟机的版本,如果将此处centos:8 更改成java或者其他,那么后续你安装就会出现,jdk安装不能适配aarch64版的虚拟机.
- 如果复制代码,一定要复制全,尤其是FROM一定要全,否则下一步构建镜像就会报"Sending build context to Docker daemon 2.56kB Error response from daemon: dockerfile parse error ”
ADD jdk-8u301-linux-aarch64.tar.gz /usr/local
中add会自动解压到指定的目录,此处我的是usr/local
下(这个解压是解压到容器中的目录,并不是我们虚拟机上的目录,而且这个目录是根据自己平时使用爱好来设置,比如我一般喜欢把软件放在usr/local
目录下,大家也可以根据自己爱好来设置)- ENV :是jdk环境配置,类似我们之前在
/etc/profile
中通过export
来进行环境配置,注意:ENV JAVA_HOME /usr/local/jdk1.8.0_301
此处目录一定是add中指定的目录下一级,否则安装完之后,运行Java -version
就会出现无该指令 - 保存该文件推出
4. 运行配置文件 Dockerfile
-
运行如下指令即可,出现如下图尖头所指方向即安装成功
//注意这个.一定要有,且-t后面是镜像名称,大家可以根据自己需要更改 docker build -t='jdk1.8' .
5.运行jdk镜像
- 执行指令:
docker run -it --name=jdk8 jdk1.8:latest /bin/bash
镜像启动同时进入容器内部 - 查看jdk是否安装成功,执行
java --version
6.扩展:jdk退出后如何再次启动
- 到5,jdk就已经安装完成了,但是我们也遇到一个问题就是安装之后如果退出容器,jdk就挂掉了
- 想要一直运行执行指令:
docker start jdk8
即可 - 我们再次查看,jdk在运行中
- 提取码:31v4 ↩︎