经常部署jar包,用的最多的就是jdk8的基础镜像了。但是今年中的时候,DockerHub突然访问不了了。有的说是国内的事,要墙;有的说是国外主动的,要制裁我们。不管什么原因,它是影响了我看文档。
而对于选择JDK镜像(一般用openjdk,我用的8)来说,面临了2大问题:
- 网页打不开,看不了文档,拉取时选版本难办;
- 官方的openjdk已经不建议生产环境使用了,而且jdk8版本也不是最新的,不及时
针对上面这2个问题,记录一下解决办法。
- 官方的openjdk已经不建议生产环境使用了,而且jdk8版本也不是最新的,不及时
1. 网页打不开的问题
这个问题,最开始想找国内的大厂网页版。但是没找到,全是镜像加速地址。虽然解决不了根本问题,但是还是要记录一下这些加速地址,配置Docker的时候要用。
- 网易云 https://hub-mirror.c.163.com
- 百度云 https://mirror.baidubce.com
- 腾讯云 https://mirror.ccs.tencentyun.com
- 阿里云(需要自己的账号登陆才有) https://0yrrserh.mirror.aliyuncs.com
- DaoCloud 镜像站 https://docker.m.daocloud.io
- 上海交大镜像站 https://docker.mirrors.sjtug.sjtu.edu.cn
- 南京大学镜像站 https://docker.nju.edu.cn
- 科大镜像站 https://docker.mirrors.ustc.edu.cn
- Azure中国镜像 https://dockerhub.azk8s.cn
另外:七牛云、Docker 中国官方镜像好像已经不能用了。
注意、注意、注意:
虽然大厂的镜像地址都不能用,但是找到了一个个人的镜像网站,同步还挺及时,可以查看文档。感谢这个大佬。
个人镜像地址:https://hub.axlinux.top/
2. JDK8镜像选择
虽然官方的openjdk不建议生产环境使用了,但是还有很多其他版本可以代替的。不说别的,国内的2个大哥都有自己的openjdk产品,而且还丰富了功能,兼容官方的。
-
阿里巴巴
阿里的jdk产品名字Alibaba Dragonwell它是这样介绍的:Alibaba Dragonwell 是一款免费的, 生产就绪型Open JDK 发行版,提供长期支持,包括性能增强和安全修复。阿里巴巴拥有最丰富的Java应用场景,覆盖电商,金融,物流等众多领域,世界上最大的Java用户之一。Alibaba Dragonwell作为Java应用的基石,支撑了阿里经济体内所有的Java业务。而且指出了 Alibaba Dragonwell是OpenJDK在生产环境的可靠替代品。 -
腾讯
腾讯的jdk产品名字Kona,它是这样介绍的:腾讯 Kona 是一个基于 OpenJDK 定制的,生产环境可用,高性能,安全稳定,兼容多种运行平台的 OpenJDK 开源发行版本。提供企业级 JDK 服务,由腾讯专业技术团队提供技术维护、性能优化及安全保障等服务,为您提供最优的 Java 云生产环境及解决方案。 -
Eclipse
作为Java开发IDE的半壁江山,Eclipse当然有自己的jdk产品Eclipse Temurin,它是这样介绍的:Eclipse Temurin 是由基于 OpenJDK 的开源 Java SE 产生的构建版本。Temurin 适用于 广泛的平台 以及诸多 Java SE 版本。以下列出了推荐用于生产的最新版本,并且定期由 Adoptium 社区发布更新和支持。迁移帮助、容器镜像和包安装指南可在文档区获得。
我就用的这个,因为我用eclipse。当然还有其他原因:- 最接近openjdk了,基本原滋原味
- 各种平台基本都支持,而且更新及时,随着openjdk发布版本而更新
用这个镜像需要注意一点:时区问题,语言问题,毕竟这是国外的
-
亚马逊
亚马逊的产品名字Amazon Corretto,可以点进去看看介绍,也不错,和Eclipse那个差不多。
当然,除了上面这几个还有其他的,比如Azul的azul,IBM的Semeru,华为的毕昇JDK(openEuler)等。
3. Eclipse Temurin简单使用
主要更改了一下时区,切换了一下中文
FROM eclipse-temurin:8-jre
LABEL com.test.image.authors="test"
# 设定时区、中文
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& apt-get update && apt-get install -y locales && locale-gen zh_CN.UTF-8 \
&& update-locale LANG=zh_CN.UTF-8 && rm -rf /var/lib/apt/lists/*
ENV LANG=zh_CN.UTF-8 \
LANGUAGE=zh_CN:zh \
LC_ALL=zh_CN.UTF-8
# VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD XXXXXX.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","-Xmx2g","-Xms2g","/app.jar"]
# 为服务暴露端口
EXPOSE 8080
如果有自己的docker镜像仓库,可以将前面部分build成一个基础镜像,毕竟每次update和设置中文也是花时间的。
网友评论