2017-11-07 3 views
1

Ich bin ein anderer Docker-Compose Logstash auf Port 5044 (mit docker-elk). Ich bin in der Lage, Anfragen an den Dienst auf localhost: 5044 auf meinem Host zu stellen, damit der Port korrekt angezeigt wird.Docker komponieren Zugriff auf Port auf Host

Ich bin dann einen anderen Docker-Compose (Filebeat) laufen aber von dort kann ich keine Verbindung zu "Localhost: 5044". Hier ist die Docker compose Datei:

version: '2' 

services: 

    filebeat: 
    build: filebeat/ 
    networks: 
     - elk 

networks: 

    elk: 
    driver: bridge 

Alle cluye, warum die localhost: 5044 ist nicht komponieren in diesem Docker zugreifbar?

+0

Meinst du damit zu sagen, dass nach dem Start einer anderen komponieren System konnten Sie keine Verbindung zu localhost: 5044 herstellen? – pulankit

+0

können Sie bitte auch die andere Datei verfassen? –

+0

@omu_negru Die andere Zusammensetzung ist hier verfügbar: https://github.com/deviantony/docker-elk/blob/master/docker-compose.yml. – dhrm

Antwort

2

Zunächst einmal die Compose Datei, die Sie Port 5000 verbunden aussetzt, aber Sie sagen, Sie versuchen zu Port 5044.

Zweitens zu verbinden, Freilegung Port 5044 (oder 5000) wird der Port zur Verfügung, die machen Host-Maschine, nicht zu anderen Containern, die mit anderen Compose-Dateien gestartet wurden. entweder

So wie ich es sehe, ist können Sie:

  • den ersten Dienst halten, wie es ist und anstelle von localhost: Port auf dem SECON Service Gebrauch your_ip: Hafen, wo your_ip aus ifconfig -a abgerufen werden oder etwas ähnliches und soll wie folgt aussehen 192.168.x.x

  • Connect beiden Dienste an ein externes Netzwerk geschaffen, wie so:

    • f erstellen rste das Netzwerk mit docker network create foo
    • Link, um die Dienste zu dem externen Netzwerk in der Compose-Datei:

networks: test_network: external: true

Zugriff Dann von localhost:port zu logstash:port

Gut die logstash Referenz ändern Glück

+0

Danke, ich mag die erste Lösung, weil sie die beiden Dienste trennt. Wenn ich die lokale IP-Adresse meiner Host-Maschine im Dateibeat-Compose-Dienst (anstelle von localhost) verwende, funktioniert sie wie erwartet. Anstatt die IP-Adresse in diesen Dienst fest zu codieren, gibt es einen Andock-Weg, um die lokale IP-Adresse des Hosts irgendwie in einen Host-Namen zu binden, der auf dem Container verfügbar ist? – dhrm

+0

nicht wirklich, es sei denn, Sie tun einige 'Grep' foo vorher und injizieren den Wert mit einem ENV var. Deshalb bevorzuge ich die zweite Lösung, da sie die Details des Stapels verbirgt und der Logstash-Dienst nicht einmal den Port freilegen muss. –

+0

Okay. Am Ende werden meine Dienste auf verschiedenen Rechnern laufen, so dass das freigegebene externe Netzwerk in Docker keine Lösung ist. – dhrm

Verwandte Themen