Docker:无法打开端口8080

我有一个容器内的REST API绑定到/ rest / getMail,它返回一个JSONstring。

我可以在容器中调用这个API,使用curl localhost:8080/rest/getMail没有问题。

但是,我不能从外部调用这个API,即使我已经EXPOSE了这个端口,并且做了一个外部的内部端口绑定: docker run -d -i -p 2500:8080 myimage ,或者docker run -d -i -p 2500:8080 myimage docker run -d -i --expose 8080 -p 2500:8080 myimage 。 它显示:连接被拒绝。

我甚至不能使用IP地址来调用API: curl 172.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_ip:host_port URL。 你在主机上运行第二个curl命令吗? 如果是这样,端口应该是映射的端口(例如2500,在你的例子中)。

你可以尝试在主机上运行这个:

curl localhost:2500/rest/getMail

还有一件事要检查,是否在主机上有阻止这个连接的防火墙。