# 建立一个新的镜像文件配置模板新建立的镜像是以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 /tmpdocker build -f ./Dockerfile_jdk -t java:11 .测试docker run -it --rm java:11 java -versiondocker 镜像https://docker.m.daocloud.iocentos7.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] nameCentOS-$releasever - Base - mirrors.aliyun.com failovermethodpriority baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/os/$basearch/ gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 #released updates [updates] nameCentOS-$releasever - Updates - mirrors.aliyun.com failovermethodpriority baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/updates/$basearch/ gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] nameCentOS-$releasever - Extras - mirrors.aliyun.com failovermethodpriority baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/extras/$basearch/ gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] nameCentOS-$releasever - Plus - mirrors.aliyun.com failovermethodpriority baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/centosplus/$basearch/ gpgcheck1 enabled0 gpgkeyhttps://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7 #contrib - packages by Centos Users [contrib] nameCentOS-$releasever - Contrib - mirrors.aliyun.com failovermethodpriority baseurlhttps://mirrors.aliyun.com/centos-vault/7.9.2009/contrib/$basearch/ gpgcheck1 enabled0 gpgkeyhttps://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-7jdk21镜像# 建立一个新的镜像文件配置模板新建立的镜像是以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 :langzh | 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:NewRatio4 -XX:MaxDirectMemorySize4g -XX:MetaspaceSize512m -XX:MaxMetaspaceSize1g -XX:UnlockExperimentalVMOptions -XX:UseZGC -XX:-UseTransparentHugePages -XX:ZFragmentationLimit20 -XX:ZCollectionInterval10 -Xlog:gc*:stdout:time -XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath/home/yh/pojo/logs/prj/heapdump.hprof -XX:PrintGCDetails -Dfile.encodingutf-8 -Djava.security.egdfile:/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