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 中的 Kong : 在不使用 curl 的情况下配置 API 端点
支持HTTP2的cURL——基于Alpine的最小化Docker镜像