【Docker】手动构建 OracleJDK11 镜像

本文介绍了如何在DockerHub无法访问的情况下,手动构建Oracle JDK11的Docker镜像。首先,从Oracle官网下载JDK11的tar文件,然后在Linux服务器上创建Dockerfile,通过编写Dockerfile来设定镜像环境,包括设置时区、环境变量等。最后,使用`docker build`命令将Dockerfile转化为镜像,并验证JDK版本。
摘要由CSDN通过智能技术生成

[!WARNING]

2023.5.18,Docker Hub 官网(hub.docker.com)突然无法访问……
Docker Hub 无法正常访问

Docker 的官方 jdk 镜像为 openjdk(下图),目前 jdk 的长期支持版(LTS)有 1.8、11、17,如果项目开发使用的是 jdk11,Dockerfile 中就写 FROM 的时候就要选择 jdk11 的 image 了,可以通过 docker search 查找别人构建好的 jdk11 镜像,也可以自己制作镜像,这里我们自己构建,方法如下

在这里插入图片描述

1 选择 JDK 的基础镜像,这里我选用 Oracle 的(openjdk、graalvmjdk 均可),从Oracle 官网下载 JDK11的 tar 包,不要下成.zip 的了

在这里插入图片描述

2 上传到 linux 服务器并创建一个 Dockerfile 文件,任意位置均可,最好和 Dockerfile 一个路径下,这样不用 build 时用 -f 指定 Dockerfile 的位置

在这里插入图片描述

3 编写 Dockerfile 文件,这个才是重点
内容如下:

# 建立一个新的镜像文件,配置模板:新建立的镜像是以 centos 为基础模板
# 因为 jdk 必须运行在操作系统之上
FROM centos:7.9.2009

# 维护者
MAINTAINER author <xxx@xx.com>

# 创建一个新目录来存储 jdk 文件
RUN mkdir /usr/local/java

#将 jdk 压缩文件复制到镜像中,它将自动解压缩 tar 文件
ADD jdk-11.0.10_linux-x64_bin.tar.gz /usr/local/java/

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk-11.0.10
ENV PATH $JAVA_HOME/bin:$PATH

# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 

4 将 Dockerfile 文件转为镜像

docker build -t java:11 .

-f:指定要使用的 Dockerfile 路径;

--tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

5 验证 jdk 版本(可略)

首先查看刚才构建的镜像
在这里插入图片描述

运行该镜像
在这里插入图片描述

查看 jdk 版本,是 11(具体是 11.0.10,和之前下载的 tar 文件名中版本一致),版本无误
在这里插入图片描述

完成!可以愉快的使用 Oracle JDK11 了😊

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
你可以通过以下步骤在本地创建一个离线的 Docker JDK 11 镜像: 1. 首先,从 Docker Hub 上下载 JDK 11 镜像并将其保存为 tar 文件: ``` docker pull openjdk:11-jdk docker save openjdk:11-jdk > openjdk11.tar ``` 2. 将 tar 文件传输到没有网络连接的机器上。 3. 在离线机器上加载镜像文件: ``` docker load < openjdk11.tar ``` 4. 创建一个新的 Dockerfile 文件,其中包含以下内容: ``` FROM openjdk:11-jdk # 安装所需的软件包和依赖项 RUN apt-get update && \ apt-get install -y wget && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 设置 JAVA_HOME 环境变量 ENV JAVA_HOME=/usr/local/openjdk-11 # 下载所需的依赖项 RUN wget https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.tar.gz && \ tar -zxvf apache-maven-3.6.3-bin.tar.gz && \ mv apache-maven-3.6.3 /usr/local && \ rm -f apache-maven-3.6.3-bin.tar.gz # 设置 MAVEN_HOME 环境变量 ENV MAVEN_HOME=/usr/local/apache-maven-3.6.3 ENV PATH=$MAVEN_HOME/bin:$PATH ``` 注意,这个 Dockerfile 中下载了 Apache Maven 的二进制文件,并将其安装在 `/usr/local/apache-maven-3.6.3` 目录下。你可以根据自己的需要更改这些命令。 5. 构建 Docker 镜像: ``` docker build -t myjdk11 . ``` 完成后,你将在本地创建了一个名为 `myjdk11` 的 Docker 镜像,其中包含了 JDK 11 和 Apache Maven 依赖项。你可以通过以下命令启动该镜像: ``` docker run -it myjdk11 ``` 希望这可以帮助到你!
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值