Ich habe folgendes Setup in Docker:Anmeldung nicht aus (fluentd) logdriver in Servicenamen compose
- Applikation (httpd)
- Fluentd
- Elasticsearch
- Kibana
Die Konfiguration des Protokolltreibers der Anwendung beschreibt den Fluentd-Container. Die Protokolle werden in ES gespeichert und in Kibana angezeigt.
Wenn die logdriver wie diese konfiguriert ist, funktioniert es:
web:
image: httpd
container_name: httpd
ports:
- "80:80"
links:
- fluentd
logging:
driver: "fluentd"
options:
fluentd-address: localhost:24224
tag: httpd.access
Und fluentd ist die Abbildung seiner exponierten Port 24224 auf Port 24224 des Wirtes.
fluentd:
build: ./fluentd
image: fluentd
container_name: fluentd
links:
- "elasticsearch"
ports:
- "24224:24224"
Aber ich möchte nicht meine fließend auf dem Hostnetwork aussetzen. Ich will es halten ‚privat‘ im Innern des Docker Netzwerkes (Ich will nur die App und Kibana auf dem Host-Netzwerk zur Karte), so wie folgt aus:
fluentd:
build: ./fluentd
image: fluentd
container_name: fluentd
links:
- "elasticsearch"
Die Port 24224 (im dockerfile) nach wie vor ausgesetzt ist, aber Es ist nicht auf das Host-Netzwerk abgebildet. Jetzt möchte ich die Config des logdriver meiner App ändern: Protokollierung: Fahrer: "fluentd" Optionen: fluentd-Adresse: fluentd: 24224 tag: httpd.access
So fluentd ist der Name der fluentd container und sie befinden sich im selben Netzwerk, aber die App kann keine Verbindung herstellen.
failed to initialize logging driver: dial tcp: lookup fluentd
Ist dies möglicherweise, weil die Protokollierungsoption vor der 'Link'-Option in der Compose-Datei ausgeführt wird?
Gibt es eine Möglichkeit, dies funktionieren zu lassen?
Okay, gut zu wissen. Vielen Dank. – lvthillo