使用docker构建jdk17镜像

1、修改docker镜像源

ii、添加镜像源

 vim /etc/docker/daemon.json 

{
  "registry-mirrors": [
    "https://l10nt4hq.mirror.aliyuncs.com",
    "http://hub-mirror.c.163.com",
    "http://mirrors.ustc.edu.cn/",
    "http://mirror.azure.cn/"
  ]
}

ii、重启docker

systemctl restart docker

iii、查看镜像源是否添加成功

docker info | grep -i "mirror

2、下载 jdk17 文件

 wget https://download.oracle.com/java/17/archive/jdk-17.0.11_linux-x64_bin.tar.gz

3、下载字体

simsun.ttc(微软雅黑)

msyh.ttc (常规)
msyhbd.ttc (粗体)
msyhl.ttc(轻体)

直接下载:https://songzixian.lanzouq.com/isrrn179cr1i ,密码:fyxy

4、编写DockerFile文件

# 使用Linux发行版作为基础镜像
FROM centos:7

# 镜像作者
MAINTAINER zxx

#字体库安装
RUN yum -y install fontconfig
RUN mkdir -p /usr/share/fonts/
COPY ./font/simsun.ttc /usr/share/fonts/
COPY ./font/msyh.ttc /usr/share/fonts/
COPY ./font/msyhbd.ttc /usr/share/fonts/
COPY ./font/msyhl.ttc /usr/share/fonts/
RUN  chmod 755 /usr/share/fonts/*
RUN fc-cache -fv

#JDK安装
# 解压JDK压缩包
ADD jdk-17_linux-x64_bin.tar.gz /usr/local
# 设置JAVA_HOME环境变量
ENV JAVA_HOME=/usr/local/jdk-17.0.11/
# 将JDK的bin目录添加到PATH环境变量中
ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$PATH:$JAVA_HOME/bin

#校准容器时间
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/timezone

#切换容器字体编码
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8

#回到主目录, 授权root
WORKDIR /
USER root

5、Dockerfile所在同级目录执行构建镜像命令

docker build -t='jdk:17.0.11' .

6、查看构建结果

docker images

7、启动镜像

docker run -di --name jdk17 -d jdk:17.0.11

8、进入容器

docker exec -it jdk17 /bin/bash

9、查看版本 java -version

### 如何在 Docker使用 JDK 17 镜像 为了在 Docker 容器中运行 Java 应用程序,可以基于官方的 OpenJDK 或 Oracle JDK 构建自定义镜像。对于特定版本如 JDK 17 的安装,通常有两种方法:一是利用现有的官方基础镜像;二是自行创建包含所需配置和依赖项的新镜像。 #### 使用官方提供的 JDK 17 基础镜像 最简便的方式是从 Docker Hub 获取预构建好的官方 OpenJDK 或者 Oracle JDK 镜像作为起点: ```bash docker pull openjdk:17-jdk-alpine ``` 此命令会拉取适用于大多数场景的基础镜像,它包含了必要的 JDK 工具链以及 Alpine Linux 发行版中的基本组件[^1]。 #### 自定义构建带有额外设置的 JDK 17 镜像 如果需要更复杂的环境定制化,则可以通过编写 `Dockerfile` 来实现这一点。下面是一个简单的例子展示如何制作一个包含最新稳定版 JDK 17 和一些常用字体支持(用于解决可能存在的中文显示问题)的 Docker 映像: ```Dockerfile FROM alpine:latest # 设置工作目录并下载 JDK WORKDIR /opt/ RUN apk add --no-cache curl && \ mkdir -p /usr/local/java && \ cd /usr/local/java && \ curl -O https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz && \ tar zxvf jdk-17_linux-x64_bin.tar.gz --strip-components=1 && \ rm jdk-17_linux-x64_bin.tar.gz ENV JAVA_HOME=/usr/local/java \ PATH=$PATH:/usr/local/java/bin # 添加字体库以防止日志中的汉字乱码现象 COPY ./fonts/*.ttc /usr/share/fonts/truetype/ CMD ["java", "-version"] ``` 上述脚本首先选择了轻量级的操作系统——Alpine Linux 作为底层操作系统,并通过一系列指令完成了 JDK 的获取与解压操作。接着设置了两个重要的环境变量来指明 Java 运行时的位置。最后一步则是复制预先准备好的 TrueType 字体文件到系统的共享字体路径下,从而确保应用程序能够正确渲染中文字符[^3]。 完成以上步骤之后,就可以按照如下方式编译新的映像并向其中注入任何其他所需的资源或应用代码了: ```bash docker build -t my-custom-jdk17 . ``` 一旦成功建立了这个新映像,便能轻松地启动容器实例来进行测试或其他开发活动: ```bash docker run -dit --name custom_jdk17_container my-custom-jdk17 java -version ``` 这将开启一个新的交互式终端连接至名为 `custom_jdk17_container` 的容器内执行指定命令验证Java版本信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、ゝ回眸相視笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值