2017-08-01 1 views
0

Ich möchte einen Elasticsearch Container in Docker starten. Standardmäßig sehe ich fast überall so etwas wie:Kartenport von Elasticsearch in Docker

docker run -d -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

Jetzt ist meine Frage: Warum kartieren wir den Port auf unserem Host-Netzwerk? Ich verstehe Port-Mapping, aber ich sehe den großen Vorteil nicht.

Meiner Meinung nach würde ich immer etwas tun:

$ docker network create logging 
20aa4c7bf2d8289d8cbd485c3e384f9371eed87204625998687c61e4bad27f14 

$ docker run -d --name es --net logging docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

Und der ES verbindet, indem Sie es Namen (es in diesem Fall) sind und Behälter im gleichen Netzwerk bereitstellen. Ich würde meinen, dass mein ES in seinem privaten Dockernetzwerk sicherer ist.

Ich sehe, es gibt einen Vorteil für Port-Mapping, wenn Ihre Container, die sich mit elasticsearch verbinden müssen, nicht im selben Netzwerk sind. Aber gibt es noch andere Vorteile oder warum wird dies immer mit Port-Mapping angezeigt?

Antwort

0

So Host-Zugriff ist mehr über die Zugänglichkeit. Wenn Sie Andockfenster auf dem lokalen Computer ausführen und nur auf diesem Computer auf die App zugreifen möchten, ist keine Hostzuordnung erforderlich.

Wenn Sie nun auf einem anderen Computer als Ihrem Docker-Host auf diese Anwendung zugreifen müssen, müssen Sie dieses Port-Mapping durchführen.

docker run -d -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

Diese bildet den Host-Port 9200 (linke Seite) bis 9200 innerhalb des Docker (rechte Seite). Die Schnittstelle zum Abhören ist 0.0.0.0, was alle Schnittstellen bedeutet. Und somit ist es für jeden zugänglich, wie er Zugang zu dieser Maschine hat.

Wenn Sie es sicherer machen wollen, dann tun Sie es wie unten

docker run -d -p 127.0.0.1:9200:9200 docker.elastic.co/elasticsearch/elasticsearch:5.5.1 

Diese auf dem lokalen Host nur hören würde. Nur Sie können auf die Maschine zugreifen. Aber wenn man es von einem Ort zugreifen müssen sonst dann würden Sie einen SSH-Tunnel verwenden

ssh -L 9200:127.0.0.1:9200 <user>@<HOSTIP> 

Und auf dieser Maschine können Sie darauf zugreifen auf 127.0.0.1:9200

Nächste Stufe der Sicherheit wird hinzugefügt, wenn verwenden Sie eine Firewall wie ufw, firewalld usw.

Was Sie mit Netzwerk-Kommando hat

docker network create logging 

Grundsätzlich neues Netzwerk erstellt und isoliert andere Docker-Container vom Zugriff auf den Host. Aber solange externe Zugriffsmöglichkeiten betroffen sind, müssen Sie es noch auf den Host-Port zuordnen

Hoffe das beantwortet Ihre Frage

Verwandte Themen