我在容器中有一个REST API,绑定到/ rest / getMail,它返回一个JSON字符串。
我可以使用curl localhost:8080/rest/getMail
在没有问题的情况下在容器内调用此API。
但是,我无法从外部调用此API,即使我已经EXPOSE端口并执行了外部内部端口绑定: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
给了我相同的结果。
答案 0 :(得分:1)
看起来您应该点击host_ip:host_port
网址。你在主机上运行第二个curl
命令吗?如果是这样,端口应该是映射端口(在您的示例中为2500)。
您可以尝试在主机上运行此功能:
curl localhost:2500/rest/getMail
要检查的另一件事是主机上是否有阻止此连接的防火墙。