docker Mule-server curl: (56) Recv failure: Connection reset by peer

Posted

技术标签:

【中文标题】docker Mule-server curl: (56) Recv failure: Connection reset by peer【英文标题】: 【发布时间】:2014-12-20 01:08:42 【问题描述】:

这可能只是我对 Docker 的菜鸟知识, 但我无法让网络正常工作。

我正在尝试通过 pr3d4t0r/mule 存储库运行 Mule 服务器。 我可以运行它,热插拔应用程序,但我可以访问它。

我可以在没有 Docker 的情况下运行本地服务器,并且它可以完美运行。 但当我尝试使用 Docker 时却不是这样。

当我尝试执行简单的 curl 命令时,我得到“curl: (56) Recv failure: Connection reset by peer”

curl http://localhost:8090/Sven

我尝试通过 -P 和分别通过 -p 8090:8090 公开端口,但没有成功。

当 docker 运行时,它会阻塞端口(我尝试同时运行 Docker 和普通服务器,但普通服务器说端口已经在使用)。

当我尝试使用 jboss/wildfly 之类的另一个图像并使用 -p 8080:8080 时没有问题,它可以完美运行。

mule-server 中的应用程序将记录并响应一个简单的“hello World”,输出表明应用程序已部署,但在我尝试访问它时没有消息或记录。

有什么建议吗?

【问题讨论】:

【参考方案1】:

在我的情况下,实际上是应用程序配置不正确。它有 localhost 作为主机。如果没有这个,它应该是 0.0.0.0 它只作用于 localhost 也就是 docker 容器,而不是来自它的外部。

您不需要使用 -net=host。

所以检查是否有配置

【讨论】:

这对我也有用,但这种解决方法并不能解释原因。 :( 有谁知道为什么端口转发不起作用?就我而言,我正在使用 Spring Boot 并收到错误“Recv failure: Connection reset by peer” @TrevorAllred:我觉得是因为docker network使用了自己的network namespace,所以container的127.0.0.1和host的127.0.0.1不一样 在哪里配置这个? 很好,但你是怎么做到的?【参考方案2】:

如果你有这个,评论或删除它,server.address=localhost 在你的application.properties

【讨论】:

【参考方案3】:

在 application.properties 中需要设置 0.0.0.0 ip 而不是 127.0.0.0。

【讨论】:

【参考方案4】:

错误

"curl: (56) Recv failure: Connection reset by peer"

表示docker镜像中没有进程监听该端口。选项-p是主机系统和镜像中端口的绑定。

-p <port in host os to be binded to>:<port in container>

所以,检查你的图像,也许你的容器中的应用使用不同的端口,你需要

-p 8080:8090

【讨论】:

以上是关于docker Mule-server curl: (56) Recv failure: Connection reset by peer的主要内容,如果未能解决你的问题,请参考以下文章

docker临时记录

sh 使用git和curl安装Docker

Docker 中的 Kong : 在不使用 curl 的情况下配置 API 端点

支持HTTP2的cURL——基于Alpine的最小化Docker镜像

关于docker搭建haproxy+nginx集群,主机curl: Failed问题

如何从 dockerfile 启动 Docker Compose 并一起运行 curl