基于芯片m1的mac在Centos8中利用docker安装Java jdk 所遇到及解决的方法

1,644 阅读3分钟

docker 下载java-jdk

本文已参与「新人创作礼」活动, 一起开启掘金创作之路

背景: 由于电脑上mac-m1芯片的,且在mac装的虚拟机安装也只支持aarch64版(目前),所以安装jdk就出现各种和版本不适配的问题,下载各种版本都不支持,无奈只好通过Dockerfile的方式解决

1. 下载支持aarch64的jdk

下载jdk-8u301-linux-aarch64.tar.gz (该版本支持运行)
下载地址:支持aarch64的jdk版本
文末可以获取提取码1

2.配置Dockerfile前的准备工作

  1. 可以在虚拟机上新建一个文件夹,将文件放在该目录下(我新建的目录是:/usr/local/jdk,仅供参考,大家可根据自己喜好新建)
  2. 通过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 

[指令讲解]:

  1. FROM centos:8 基于cntos8,如果没有这个镜像那么它会下载这个镜像,这个必须写,而且必须是写虚拟机的版本,如果将此处centos:8 更改成java或者其他,那么后续你安装就会出现,jdk安装不能适配aarch64版的虚拟机.
  2. 如果复制代码,一定要复制全,尤其是FROM一定要全,否则下一步构建镜像就会报"Sending build context to Docker daemon 2.56kB Error response from daemon: dockerfile parse error ”
  3. ADD jdk-8u301-linux-aarch64.tar.gz /usr/local中add会自动解压到指定的目录,此处我的是usr/local下(这个解压是解压到容器中的目录,并不是我们虚拟机上的目录,而且这个目录是根据自己平时使用爱好来设置,比如我一般喜欢把软件放在usr/local目录下,大家也可以根据自己爱好来设置)
  4. ENV :是jdk环境配置,类似我们之前在/etc/profile中通过export来进行环境配置,注意:ENV JAVA_HOME /usr/local/jdk1.8.0_301此处目录一定是add中指定的目录下一级,否则安装完之后,运行Java -version 就会出现无该指令
  5. 保存该文件推出

4. 运行配置文件 Dockerfile

  1. 运行如下指令即可,出现如下图尖头所指方向即安装成功

     //注意这个.一定要有,且-t后面是镜像名称,大家可以根据自己需要更改
    docker build -t='jdk1.8' . 
    

    在这里插入图片描述

5.运行jdk镜像

  1. 执行指令:docker run -it --name=jdk8 jdk1.8:latest /bin/bash 镜像启动同时进入容器内部
  2. 查看jdk是否安装成功,执行java --version
    在这里插入图片描述

6.扩展:jdk退出后如何再次启动

  1. 到5,jdk就已经安装完成了,但是我们也遇到一个问题就是安装之后如果退出容器,jdk就挂掉了
    在这里插入图片描述
  2. 想要一直运行执行指令:docker start jdk8 即可
  3. 我们再次查看,jdk在运行中
    在这里插入图片描述

  1. 提取码:31v4 ↩︎