2016-08-01 23 views
0

Ich habe zwei Container ausgeführt: c1 und c2.Docker-Container kann keine Verbindung zu Port herstellen, der von einem anderen Docker-Container geöffnet wurde

C1 ist auf Port 2181 und C2 ist eine Verbindung zu Port 2181

Problem ist C2 zu C1 keine Verbindung herstellen kann auf dem Port und ich bin mir nicht sicher, warum.

Wenn ich den Code, der zu C1 nicht in einem Container verbindet, funktioniert es gut. Ich weiß also, dass C1 läuft und der Port korrekt angezeigt wird. Nur wenn ich die Anwendung in einen eigenen Container lösche, ist der Port nicht mehr sichtbar.

Ich habe lsof aus C2 versucht und es ist nicht aufgeführt, was sinnvoll ist, warum es fehlschlägt.

Irgendwelche Hinweise darauf, wo ich als nächstes aussehen sollte, würden geschätzt.

Ich war mit Docker-komponieren so die Behälter in der gleichen Netzgruppe standardmäßig sein sollte:

Hier ist meine compose Datei:

version: '2' 
services: 
    c1: 
    build: . 
    volumes: 
     - .:/code 
    depends_on: 
     - c2 
    c2: 
    image: jplock/zookeeper 
    ports: 
     - "2181:2181" 
     - "2888:2888" 
     - "3888:3888" 

In C1, der Initiator mit dem URI localhost: 2181

+1

Zeigen Sie uns Ihren Code? Nicht alles, aber genug, um das Problem genau zu reproduzieren. Welche Adresse verwenden Sie speziell, um eine Verbindung zum zweiten Container herzustellen? – larsks

+0

Ahh guter Punkt, lesen Sie einfach, dass Sie den Namen des Containers in der Compose-Datei anstelle des Hostnamens verwenden sollten. Ich verweise immer noch auf localhost. Ich werde das ausprobieren und werde es euch wissen lassen. – JamesC

+0

Danke, Larsks, du hast mir geholfen, dorthin zu kommen. – JamesC

Antwort

1

Wenn Sie auf diesen Beitrag stoßen, könnte dies helfen.

Mit Docker-compose, die Behälter bekommen einen Hostnamen steht den Dienst Alias ​​in der Docker compose Datei, Dokumente sehen hier ein:

https://docs.docker.com/compose/networking/

Modified Zitat Dieser Anwendungsfall passen

Jeder Container kann nun den Hostnamen (dh c2) nachschlagen und die IP-Adresse des entsprechenden Containers abrufen. Zum Beispiel könnte der c1-Anwendungscode eine Verbindung zur URL // c2: 2181 herstellen.

Verwandte Themen