2017-05-15 5 views
0

Ich laufe einen Behälter, der wie so von Docker-Container eingeleitet hat:Docker-compose Containerhäfen nicht funktioniert

puppetboard: 
    build: ./images/puppetboard 
    image: puppet/puppetboard 
    ports: 
     - 5000:5000 
    links: 
     - puppetdb:puppetdb 

Es baut erfolgreich, und wenn ich docker ps laufen kann ich sehen:

0.0.0.0:5000->5000/tcp 

Ich kann sogar in den Container mit docker exec gehen und curl localhost:5000 verwenden, die eine HTML-Seite zurückgibt.

ich doppelt so hoch Host-Maschine überprüfen Port 5000 auf 127.0.0.2 (Docker Netzwerk) sehen mit nmap 127.0.0.2 und dem Hafen steht zur Verfügung: 5000/tcp open upnp.

Aber wenn ich gehe 127.0.0.2:5000 in meinem Browser auf dem Host-Rechner bekomme ich Website nicht verfügbar. Wie kann ich dieses Netzwerkproblem beheben?

Ergebnis von curl 127.0.0.2:5000 & curl 127.0.0.1:5000 ist: curl: (56) Recv failure: Connection reset by peer.

+0

ist es ein Tippfehler? Versuchen Sie 127.0.0.1:5000 (localhost: 5000) anstelle von 127.0.0.2:5000 – user2915097

+0

versuchen Sie Curl Sie localhost, 127.0.0.1:5000 – papey

+0

@papey aktualisierte Frage mit 'curl' Ergebnis –

Antwort

2

Wie wir in diesem room diskutieren, müssen Sie sicherstellen, dass die containerisierte Anwendung auf alle Schnittstellen innerhalb des Containers zuhören. Im Puppen Board Fall sieht Config wie:

DEV_LISTEN_HOST = '0.0.0.0' 

0.0.0.0 verwendet wird, zu sagen, „alle Schnittstellen“

2

127.0.0.x ist eine Loopback-Adresse. Zum Veröffentlichen von Ports im Container an den Host müssen Sie alle Schnittstellen im Container überwachen. Sie müssen also sicherstellen, dass Ihre App im Container so konfiguriert ist, dass sie auf 0.0.0.0.5000 hört (dies unterscheidet sich von der Option, die den Port in der Docker-Compose-Datei veröffentlicht).

Verwandte Themen