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

# 作者名  
MAINTAINER yuanhang

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

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

# 设置时区
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
ADD ./CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo      
RUN yum clean all
RUN yum makecache

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN yum install dejavu-sans-fonts fontconfig -y
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk-11
ENV PATH $JAVA_HOME/bin:$PATH

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

docker build -f ./Dockerfile_jdk -t java:11 .

测试

docker run -it --rm java:11 java -version

docker 镜像

https://docker.m.daocloud.io

centos7.9  yum源        CentOS-Base.repo

# CentOS-Base.repo

#

# The mirror system uses the connecting IP address of the client and the

# update status of each mirror to pick mirrors that are updated to and

# geographically close to the client. You should use this for CentOS updates

# unless you are manually picking other mirrors.

#

# If the mirrorlist= does not work for you, as a fall back you can try the

# remarked out baseurl= line instead.

#

#

[base]

name=CentOS-$releasever - Base - mirrors.aliyun.com

failovermethod=priority

baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

#released updates

[updates]

name=CentOS-$releasever - Updates - mirrors.aliyun.com

failovermethod=priority

baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful

[extras]

name=CentOS-$releasever - Extras - mirrors.aliyun.com

failovermethod=priority

baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages

[centosplus]

name=CentOS-$releasever - Plus - mirrors.aliyun.com

failovermethod=priority

baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/centosplus/$basearch/

gpgcheck=1

enabled=0

gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7

#contrib - packages by Centos Users

[contrib]

name=CentOS-$releasever - Contrib - mirrors.aliyun.com

failovermethod=priority

baseurl=https://mirrors.aliyun.com/centos-vault/7.9.2009/contrib/$basearch/

gpgcheck=1

enabled=0

gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7


jdk21镜像

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

# 设置时区
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
ADD ./CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo      
RUN yum clean all
RUN yum makecache
 
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN yum install dejavu-sans-fonts fontconfig tar gzip  -y

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

# 复制JDK安装包到容器中
COPY jdk-21_linux-x64_bin.tar.gz /usr/local/java/jdk-21_linux-x64_bin.tar.gz
 
# 解压JDK安装包
RUN cd /usr/local/java/ && \
    tar -zxzf jdk-21_linux-x64_bin.tar.gz && \
    rm jdk-21_linux-x64_bin.tar.gz && \
    alternatives --install /usr/bin/java java /usr/local/java/jdk-21.0.6/bin/java 2 && \
    alternatives --set java /usr/local/java/jdk-21.0.6/bin/java
 
 

# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk-21.0.6
ENV PATH $JAVA_HOME/bin:$PATH
RUN source /etc/profile
# 验证安装  查看jdk解压的路径
RUN cd /usr/local/java/ && pwd && ls
RUN java -version
 
# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 

带有微软雅黑字体的jdk11

# 建立一个新的镜像文件,配置模板:新建立的镜像是以centos为基础模板
# 因为jdk必须运行在操作系统之上
FROM centos:7.9.2009
 
# 作者名  
MAINTAINER yuanhang
 
# 创建一个新目录来存储jdk文件
RUN mkdir /usr/local/java
 
#将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
ADD jdk-11_linux-x64_bin.tar.gz /usr/local/java/
 
 
# 设置时区
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
ADD ./CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo      
RUN yum clean all
RUN yum makecache
 
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 安装字体工具
RUN yum install dejavu-sans-fonts fontconfig mkfontscale  -y
# 创建字体目录并复制字体
RUN mkdir -p /usr/share/fonts/msyh
COPY MSYH*.TTC /usr/share/fonts/msyh/
# 设置权限并更新字体缓存
RUN chmod -R 755 /usr/share/fonts/msyh && \
    cd /usr/share/fonts/msyh && \
    mkfontscale && \
    mkfontdir && \
    fc-cache -fv
# 验证字体安装
RUN fc-list :lang=zh | grep "Microsoft YaHei"

# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk-11
ENV PATH $JAVA_HOME/bin:$PATH
 
# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp 

字体从 C:\Windows\Fonts 可以找到

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐