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
还有一件事要检查,是否在主机上有阻止这个连接的防火墙。