curl: (56) Recv failure: Connection reset by peer问题汇总和解决方案

这两天正在学习用docker制作tomcat镜像,有一个问题困扰了我3天,可能大家在学习时也会遇到,于是我就单独发一篇文章来解决这个问题。
解决办法我在上一篇文章 Docker进阶篇之DockerFile制作Tomcat镜像,教你如何发布镜像到DockerHub和阿里云 已经详细说明了,这里再说明一次。

问题描述:

[root@wyc tomcat]# curl localhost:9090
curl: (56) Recv failure: Connection reset by peer

curl: (56) Recv failure: Connection reset by peer ,意思是说访问失败,连接被重置,会出现这个错误的原因有很多种,我们需要查看日志文件来找出原因。

日志1:无法找到jdk路径

[root@1c299e7ab95c logs]# cat catalina.out
/usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory
/usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory
/usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory
/usr/local/apache-tomcat-10.1.0/bin/catalina.sh: line 466: /usr/local/jdk1.8.0_301/bin/java: No such file or directory

日志1解决办法:

1、如果单纯是dockerfile文件的路径错误,只需要修改文件中的路径即可,大概率是jdk的路径写错了

ENV JAVA_HOME /usr/local/jdk1.8.0_281
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.60
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.60
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

如上写法是没问题的。

2、如果是jdk本身有问题,我的问题就是jdk的压缩包出问题了,下载jdk压缩包时要注意区分这个压缩包是不是真的是压缩包,可以用 cat jdk-8u281-linux-x64.tar.gz 查看,如果出现前端代码就代表这是个网址而不是压缩包,如果出现乱码,则是压缩包;或者用 ls -l 查看压缩包大小,如果很小则不是压缩包。解决办法是重新去官网找jdk的压缩包。

解决了上述问题后继续通过curl查看网络请求 curl localhost:9090,发现还是会报 curl: (56) Recv failure: Connection reset by peer ,继续查看日志。

日志2:jdk版本不匹配或jdk版本太高

[root@wyc tomcat]# curl localhost:9090
curl: (56) Recv failure: Connection reset by peer
[root@wyc tomcat]# docker logs a23b8ffe533a
Tomcat started.
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/catalina/startup/Bootstrap has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)

日志2解决办法:

出现这样的日志,有两种可能原因:

1、linux的jdk版本和完成的镜像中的jdk版本不一致。
解决办法就是让两者的jdk版本一致。当时我的tomcat镜像下载的的jdk版本是 jdk1.8.0_301,而linux的jdk版本是自带的 jdk1.8.0_262,于是我删除了linux自带的jdk下载了301版本的jdk。

2、当我解决了jdk不一致的问题后,发现还是会出现上述日志,此时原因是jdk版本太高。
解决办法是把已有的jdk删除后下载低版本的jdk(但是别忘了容器的jdk版本和linux的jdk版本要一致)
我刚开始用的是 jdk1.8.0_301 和 apache-tomcat-10.1.0,发现问题后改成了 jdk1.8.0_281 和 apache-tomcat-9.0.60,实测可以运行。
在这里插入图片描述
上述解决办法是基于防火墙和安全组等都没有问题的情况,查看日志文件还是很重要的!
自己遇到的坑,跪着也要填完!

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]、\[2\]和\[3\]中提供了不同的命令来下载docker-compose。然而,无论使用哪个命令,当你遇到"curl: (35) TCP connection reset by peer"的错误时,这通常是由于网络连接问题引起的。这个错误表示与服务器的TCP连接被重置了。可能的原因包括网络问题、服务器问题或防火墙设置。为了解决这个问题,你可以尝试以下几个步骤: 1. 检查你的网络连接是否正常。确保你的网络连接稳定,并且没有任何阻止网络连接的问题。 2. 检查服务器的状态。确保服务器正常运行,并且没有任何问题导致TCP连接被重置。 3. 检查防火墙设置。如果你使用了防火墙,确保它没有阻止与服务器的连接。你可以尝试禁用防火墙或者配置防火墙规则来允许与服务器的连接。 如果你仍然遇到问题,你可以尝试使用其他下载方式,比如使用浏览器下载docker-compose的二进制文件,然后将其复制到正确的位置。另外,你也可以尝试使用其他的下载工具来下载docker-compose。 总结起来,当你遇到"curl: (35) TCP connection reset by peer"的错误时,你应该检查网络连接、服务器状态和防火墙设置,并尝试使用其他下载方式来解决问题。 #### 引用[.reference_title] - *1* *3* [安装Harbor,报错 curl: (35) TCP connection reset by peer](https://blog.csdn.net/MrFDd/article/details/123325235)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [成功解决:curl: (35) TCP connection reset by peer](https://blog.csdn.net/Myx74270512/article/details/128035590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值