You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker构建Java 17应用镜像失败,寻求可用JDK镜像及解决方案

Docker构建Java 17应用镜像失败,寻求可用JDK镜像及解决方案

我来帮你搞定这个问题,这其实是最近很多Java开发者容器化时都会碰到的小坑——Docker Hub上原官方openjdk镜像已经停止维护了,很多旧的Tag(比如你试的1717-oracle)都被移除了,所以才会报找不到镜像的错误。下面给你一步步讲解决办法:

一、推荐几个稳定可用的Java 17镜像

这些都是目前社区广泛使用、维护活跃的镜像,直接在Dockerfile里用就行:

  • Amazon Corretto 17:AWS维护的开源JDK,轻量且稳定,推荐用Alpine版本来缩小镜像体积,Dockerfile开头写:
    FROM amazoncorretto:17-alpine3.18-jdk
    
    Alpine版本的镜像大小只有几十MB,非常适合容器化部署。
  • Eclipse Temurin 17:Adoptium社区的官方镜像,兼容性拉满,很多企业都在用来替代旧的openjdk镜像,比如用Ubuntu Jammy的稳定版本:
    FROM eclipse-temurin:17-jdk-jammy
    
    这个镜像对各种Java框架的兼容性很好,适合复杂的Java应用。
  • Oracle OpenJDK 17:如果你的应用必须用Oracle官方的JDK,可以用Oracle维护的容器镜像,Dockerfile开头写:
    FROM container-registry.oracle.com/java/openjdk:17
    
    注意这个镜像仓库需要先登录Oracle的容器注册表才能拉取,步骤很简单,按提示操作就行。

二、怎么搜索Docker上可用的JDK镜像

不用网页也能在命令行直接搜,给你两个实用的命令:

  • 搜索官方认证的Java相关镜像:
    docker search --filter "is-official=true" java
    
  • 精准搜索带Java 17标签、星数超过100的热门镜像(星数高说明社区认可度好):
    docker search --filter "stars=100" jdk | grep 17
    
    另外也可以直接在Docker Hub的搜索框里搜「java 17」或者「jdk 17」,优先看官方认证(带「Official」标识)或者星数过千的镜像,这些都比较靠谱。

三、关于Minikube/Kubernetes的疑问

其实Minikube默认是用Docker作为容器运行时的,只要你能成功构建出Java 17的镜像,直接就能在Minikube里使用。如果构建好的镜像只在本地Docker里,Minikube没找到的话,只需要执行这条命令把镜像加载到Minikube的本地仓库:

minikube image load <你的镜像名:标签>

不需要特意换其他容器,先把镜像构建的问题解决,Kubernetes那边就能正常部署了。

总结

先从上面推荐的Amazon Corretto或者Eclipse Temurin镜像选一个试试,基本能直接解决你现在的构建失败问题。如果需要其他版本的JDK,用我给的搜索命令就能找到合适的镜像,不用纠结旧的openjdk镜像啦~

火山引擎 最新活动