docker中curl ip报错curl: (56) Recv failure: Connection reset by peer,宿主机无法ping通docker容器

docker中curl ip报错curl: (56) Recv failure: Connection reset by peer,宿主机无法ping(或curl)通docker容器

在创建容器的时候,容器的端口号一定要按照默认端口号填写,而主机端口号可随意填写(只要不重复),比如要创建一个tomcat容器,其容器端口号就要是8080,例如像这样 :
docker run -d -p 3344:8080 --name tomcat1 tomcat
完成后的端口内容是这样的
在这里插入图片描述
此时就可以通过 curl localhost:3321 成功访问到容器tomcat的网页
在这里插入图片描述
以上是正确示例
之前一直报错curl: (56) Recv failure: Connection reset by peer,就是因为容器端口号没有按默认的来填写。
以下是错误示例
docker run -d -p 3355:2021 --name tomcat2 tomcat
没有按默认端口号填写后的容器端口内容为
在这里插入图片描述
此时再curl localhost:3355 就会报错
在这里插入图片描述
因此,总结,在创建容器的时候一定要按照该容器的默认端口号来填写

### Docker 连接重置错误解决方案 当遇到 `curl: (56) Recv failure: Connection reset by peer` 错误时,常意味着客户端尝试建立连接并发送请求后,服务器端突然关闭了连接。这可能是由于多种原因引起的。 #### 1. 检查容器内的服务状态和服务配置 确保容器内运行的服务已正确启动并且正在监听预期的端口。可以过执行命令来验证这一点: ```bash docker exec -it <container_name> /bin/sh netstat -ntlp ``` 上述命令会显示所有处于监听状态的网络连接及其对应的进程 ID 和程序名称[^5]。 #### 2. 验证防火墙设置 确认宿主机上的防火墙规则不会阻止来自外部 IP 地址的数据包到达目标端口。对于 Linux 系统来说,可以使用如下命令临时禁用防火墙来进行测试: ```bash sudo systemctl stop firewalld ``` 如果问题得到解决,则说明是防火墙配置不当所致;此时应调整相应策略而非完全停用防护措施。 #### 3. 调整 SELinux 或 AppArmor 设置 某些安全模块可能会干扰到应用程序之间的信。特别是SELinux,在默认情况下它会对文件访问权限施加严格限制。可过修改 `/etc/selinux/config` 文件中的参数或将环境变量 `SECURITYPOLICY=permissive` 添加至启动脚本来放宽这些约束条件。 #### 4. 更改镜像源加速下载速度 如果是因拉取官方仓库中较大尺寸的基础映像而引发超时现象的话,那么切换成国内阿里云提供的镜像站能够有效改善这一状况: ```bash yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` 此操作有助于提高构建效率以及减少中途失败的概率[^4]。 #### 5. 排除网络因素影响 考虑到可能存在路由循环、DNS解析异常等问题,建议先ping 命令检测连性,并利用 nslookup 工具查询域名对应的真实IP地址。另外还需留意是否存在代理服务器介入的情况——它们有时也会成为阻碍正常讯的因素之一。 综上所述,针对不同场景采取相应的排查手段往往能更快定位根本原因所在。希望以上方法可以帮助解决问题!
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值