docker构建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 -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 可以找到

server.sh, zgc和headdump

#!/bin/bash JAVA_OPT="-Xms24g -Xmx24g -Xss1m -XX:NewRatio=4 -XX:MaxDirectMemorySize=4g -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1g -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -XX:-UseTransparentHugePages -XX:ZFragmentationLimit=20 -XX:ZCollectionInterval=10 -Xlog:gc*:stdout:time -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/yh/pojo/logs/prj/heapdump.hprof -XX:+PrintGCDetails -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom" if [[ ! -z "${NACOS_DISCOVERY_NAMESPACE}" ]]; then JAVA_OPT="${JAVA_OPT} -Dspring.cloud.nacos.discovery.namespace=${NACOS_DISCOVERY_NAMESPACE}" fi if [[ ! -z "${NACOS_DISCOVERY_SERVER_ADDR}" ]]; then JAVA_OPT="${JAVA_OPT} -Dspring.cloud.nacos.discovery.server-addr=${NACOS_DISCOVERY_SERVER_ADDR}" fi if [[ ! -z "${NACOS_CONFIG_NAMESPACE}" ]]; then JAVA_OPT="${JAVA_OPT} -Dspring.cloud.nacos.config.namespace=${NACOS_CONFIG_NAMESPACE}" fi if [[ ! -z "${NACOS_CONFIG_SERVER_ADDR}" ]]; then JAVA_OPT="${JAVA_OPT} -Dspring.cloud.nacos.config.server-addr=${NACOS_CONFIG_SERVER_ADDR}" fi if [[ ! -z "${NACOS_USERNAME}" ]]; then JAVA_OPT="${JAVA_OPT} -Dspring.cloud.nacos.username=${NACOS_USERNAME}" fi if [[ ! -z "${NACOS_PASSWORD}" ]]; then JAVA_OPT="${JAVA_OPT} -Dspring.cloud.nacos.password=${NACOS_PASSWORD}" fi POJO_SERVICE="${JAVA_OPT} -jar ${POJO_BASE_DIR}/${POJO_SERVICE_NAME}.jar" echo "-----------------------service start param:${POJO_SERVICE}-------------------------------" nohup java ${POJO_SERVICE} > /dev/null