我在容器中有一个 REST API,绑定(bind)到/rest/getMail,它返回一个 JSON 字符串。
我可以在容器内调用这个 API,使用 curl localhost:8080/rest/getMail
没有问题。
但是,我无法从外部调用此 API,即使我已经公开了端口并执行了外部到内部端口绑定(bind):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
网址。您是否正在运行第二个 curl
主机上的命令?如果是这样,端口应该是映射端口(即 2500,在您的示例中)。
您可以尝试在主机上运行它吗:curl localhost:2500/rest/getMail
要检查的另一件事是主机上是否有阻止此连接的防火墙。
关于curl - Docker:无法打开端口 8080,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496958/