2016-04-08 13 views
1

Ich habe eine REST-API innerhalb eines Containers, gebunden an/rest/getMail, die eine JSON-Zeichenfolge zurückgibt.Docker: Port 8080 kann nicht geöffnet werden

Ich kann diese API innerhalb des Containers mit curl localhost:8080/rest/getMail ohne Problem aufrufen.

Allerdings kann ich diese API nicht von außen aufrufen, obwohl ich bereits den Port EXPOSIERT und einen externen zu internen Port gebunden habe: docker run -d -i -p 2500:8080 myimage oder docker run -d -i --expose 8080 -p 2500:8080 myimage. Es zeigt: Verbindung abgelehnt.

Ich kann die api mit IP-Adresse wie nicht einmal nennen: curl 172.17.0.2:8080/rest/getMail

Was das Problem sein kann? Es ist wirklich komisch. Danke.

edit:

Wenn ich curl localhost:2500 tun, es zeigt:

curl: (56) Recv failure: Connection reset by peer 

Und telnet localhost:2500:

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

curl localhost:2500/rest/getMail mir das gleiche Ergebnis gab.

Antwort

1

Es sieht so aus, als müssten Sie die URL host_ip:host_port treffen. Führen Sie den 2. curl Befehl auf dem Host aus? Wenn dies der Fall ist, sollte der Port der zugeordnete Port sein (d. H. 2500 in Ihrem Beispiel).

Können Sie dies auf dem Host versuchen ausgeführt wird:

curl localhost:2500/rest/getMail

Eine weitere Sache wäre zu prüfen, ob Sie eine Firewall auf dem Host, der diese Verbindung blockiert.

+0

Ja, ich habe, der zweite (curl localhost: 2500/rest/getMail) funktioniert überhaupt nicht. – brest1007

+0

Hmmm, Könnten Sie bitte erklären, was Sie meinen, dass es nicht funktioniert? Einige weitere Informationen wären sehr hilfreich! :) Könnten Sie auch 'telnet localhost 2500' versuchen und die Ausgabe posten? – gsaslis

+0

ok danke, ja ich denke du hast Recht, der Port ist eigentlich offen, aber ich bekomme keinen Zugriff auf die API. Aber seltsam, wenn ich es aus dem Container herausrufe, funktioniert es gut. – brest1007

Verwandte Themen