Curl Docker:无法打开端口8080

Curl Docker:无法打开端口8080,curl,docker,port,containers,Curl,Docker,Port,Containers,我在容器中有一个restapi,绑定到/REST/getMail,它返回一个JSON字符串 我可以在容器内使用curl localhost:8080/rest/getMail调用此API,没有问题 但是,我无法从外部调用此API,即使我已经公开了端口并进行了从外部到内部的端口绑定:docker run-d-I-p2500:8080myimage,或者docker run-d-I--EXPOSE 8080-p2500:8080myimage。它显示:连接被拒绝 我甚至不能使用IP地址调用api,比

我在容器中有一个restapi,绑定到/REST/getMail,它返回一个JSON字符串

我可以在容器内使用
curl localhost:8080/rest/getMail
调用此API,没有问题

但是,我无法从外部调用此API,即使我已经公开了端口并进行了从外部到内部的端口绑定:
docker run-d-I-p2500:8080myimage
,或者
docker run-d-I--EXPOSE 8080-p2500:8080myimage
。它显示:连接被拒绝

我甚至不能使用IP地址调用api,比如:
curl172.17.0.2:8080/rest/getMail

有什么问题吗?真奇怪。 多谢各位

编辑:

当我执行curl localhost:2500时,它显示:

curl: (56) Recv failure: Connection reset by peer
telnet localhost:2500

Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

curl localhost:2500/rest/getMail
给了我同样的结果。

看起来你应该点击
host\u ip:host\u端口。您是否正在主机上运行第二个
curl
命令?如果是,则端口应为映射端口(例如,在您的示例中为2500)

您是否可以尝试在主机上运行此操作:

curl localhost:2500/rest/getMail


需要检查的另一件事是,主机上是否有防火墙阻止此连接。

是的,第二个防火墙(curl localhost:2500/rest/getMail)根本不起作用。嗯,请您解释一下它不起作用是什么意思?更多信息将非常有用!:)另外,您能否尝试
telnet localhost 2500
并发布输出?好的,谢谢,是的,我认为您是对的,端口实际上已打开,但我无法访问API。但奇怪的是,如果我从容器内部调用它,它工作得很好。然后,您需要告诉提供此api的应用程序服务器侦听另一个ip地址…;)我假设它只是在监听内部docker ip(172…),试着监听0.0.0.0,看看它是否工作