Wie verbinde ich zwei Andock-Container über localhost?

8

Ich habe zwei Dienste in getrennten Containern, einer ist grunt (Anwendung) und läuft von Port 9000 und der andere ist sails.js (Server), der von Port 1337 läuft. Was ich versuchen möchte, ist der Client App verbinden Sie sich mit dem Server über localhost: 1337. Ist das machbar? Danke.

    
reconman 19.03.2015, 11:54
quelle

2 Antworten

9

HOST

Sie können keine Verbindung mit dem anderen Container mit localhost herstellen (da localhost der aktuelle Container ist). Sie können jedoch eine Verbindung über den Container-Host (den Host, auf dem der Container ausgeführt wird) herstellen. In Ihrem Fall benötigen Sie boot2docker VM IP ( echo $(boot2docker ip) ). Damit dies funktioniert, müssen Sie Ihren Port auf der Host-Ebene verfügbar machen (was Sie mit -p 1337:1337 tun).

VERKNÜPFUNG

Eine andere Lösung, die am gebräuchlichsten ist und die ich bevorzuge, ist die Verknüpfung der Container.

Sie müssen dem Server docker run -Befehl das Flag --name hinzufügen: --name sails_server

Sie müssen das Flag --link zum Befehl docker run hinzufügen: --link sails_server:sails_server

Und in Ihrer Anwendung können Sie auf den Server unter sail_server:1337 zugreifen. Sie können auch Umgebungsvariablen verwenden, um die Server-IP zu erhalten. Siehe Dokumentation: Ссылка

BONUS: DOCKER-COMPOSE

Deine Laufbefehle beginnen vielleicht etwas lang zu sein ... in diesem Fall benutze ich gerne docker-compose Dadurch kann ich meine Container und ihre Beziehungen (Volumes, Namen, Links, Befehle ...) in einer Datei definieren.

    
Céline Aussourd 19.03.2015, 12:37
quelle
0

Ja, wenn Sie den Docker-Parameter -p 1337: 1337 im Befehl docker run verwenden, wird der Port 1337 aus dem Container zu Ihrem localhost: 1337

freigegeben     
Mitch Dart 19.03.2015 11:57
quelle

Tags und Links