2016-05-25 17 views
0

Hat der folgende Befehl Link zwei Container und auch den Port in meinem Netzwerk aussetzen? ..Link & Expose Docker Container simultaniously

docker run -d -p 5000:5000 --link my-postgres:postgres danwahlin/aspnetcore 

I Dav Wahlin Kurs auf Docker gucke und dieser Befehl ist weht mir durch den Kopf. Bedeutet dies, dass Port 5000 von meinem Netzwerk aus zugänglich UND zwischen den beiden Containern verbunden sein wird? Wenn dies der Fall ist, ist die Verbindung für die Kommunikation zwischen den Containern nicht erforderlich, da sie nur die IP und den Port in einer Konfigurationsdatei verwenden können. Richtig?

Antwort

0

Sieht aus wie Sie "Legacy-Linking" mit "Container-Netzwerke" verwirren. Erstellen Sie einen Link, wie Ihr Beispiel zeigt, erstellt einen Eintrag in der Container hosts Datei, so dass sie sich gegenseitig durch Namen auflösen können.

Im obigen Beispiel haben Sie einen Alias ​​ von "postgres" in den Container "my-postgres" erstellt. Think Namensauflösung hier. Dadurch wird der Netzwerkstapel nicht isoliert.

Als nächstes haben Sie den --port oder -p Schalter, der einen Container-Port zum Netzwerk freigibt. Hier geben Sie den Port 5000 frei. Ohne diesen Schalter würden Sie nichts aussetzen und würden daher keine eingehenden Anrufe empfangen.

Wenn Sie unbedingt wollen Container isolieren Sie so tun konnte, eine „Brücke Netzwerk“ wie so mit:

docker network create --driver bridge mynetwork 

Sobald das Netzwerk erstellt wird, nur Behälter zum Netzwerk hinzugefügt werden miteinander kommunizieren. Zum Beispiel:

docker run -d --net=mynetwork --name postgres postgres:latest 
docker run -d --net=mynetwork --name node node:latest