You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jib-maven-plugin拉取adoptopenjdk镜像报I/O错误及SSL握手异常问询

问题解答

疑问1:已指定基础镜像认证参数,jib为什么还读取本地.docker/config.json

jib插件对基础镜像拉取和目标镜像推送使用两套独立的认证逻辑,二者互不干扰:

  • 日志中读取~/.docker/config.json的行为是针对你要推送的目标镜像registry.gitlab.com/myapp,你没有为目标镜像单独配置jib.to.auth相关参数,jib会按默认优先级从本地Docker配置、系统环境变量等位置搜索可用凭证,这和你传入的基础镜像认证参数无关。
  • 从后续日志Using credentials from <from><auth> for adoptopenjdk:11-jre-hotspot可以确认,基础镜像确实使用了你通过命令行传入的认证参数,没有读取Docker配置文件。

疑问2:凭证正确为什么抛出SSLHandshakeException错误

SSLHandshakeException是SSL传输层握手阶段的错误,发生在凭证校验之前,和你传入的凭证本身是否正确没有关系,你遇到这个问题的核心原因是认证参数配置对象完全错误:

  • 你的基础镜像adoptopenjdk:11-jre-hotspot存放在Docker Hub公开镜像仓库,你不需要为公开镜像配置拉取认证,而且你传入的jib.from.auth参数是GitLab的账号和Token,相当于用GitLab的凭证去访问Docker Hub的服务,触发了Docker Hub的安全拦截规则,直接断开了SSL连接。
  • 你需要推送镜像到GitLab Registry,应该将GitLab的凭证配置到jib.to.auth.username和jib.to.auth.password参数上,而非jib.from.auth相关参数。
    除此之外还有几个可能的诱因,你可以逐一排查:
  • Jenkins节点配置了内网SSL代理,代理的自签名证书没有导入JVM信任证书库,导致JVM校验证书失败断开连接
  • 内网防火墙或出口策略限制了Jenkins节点对Docker Hub 443端口的访问,连接被主动切断
  • Jenkins节点使用的JDK版本过旧,默认支持的TLS版本低于Docker Hub要求的最低TLS 1.2版本,被远端拒绝连接

修复方案

删除命令行中的-Djib.from.auth.username=myUserName -Djib.from.auth.password=mygitlabtoken01参数,替换为-Djib.to.auth.username=myUserName -Djib.to.auth.password=mygitlabtoken01即可。


内容的提问来源于stack exchange,提问作者Jose A. Matarán

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:39:02