2017-11-13 2 views
0

Ich erstelle NGINX-Container. Ich möchte alle Protokolle in ein bereitgestelltes Volume und nicht in das Standardvolume schreiben. Dies kann ich erreichen, indem ich die Datei nginx.conf aktualisiere, indem ich access_log und error_log auf einen Ordner in eingehängtem Volume zeige. Der Dreh ist, dass ich möchte, dass jeder Container in einen containerspezifischen Ordner innerhalb des bereitgestellten Volumes schreibt.So arbeiten Sie mit Variablen in DOCKERFILE

Für zB: Container Bildname: mycontainerapp Mounted Volumen: /logdirectory Dann ich will: /var/log-/logdirectory/mycontainerapp/{containerID}/log

diese Weise zeigen, kann ich mit dem gemeinsamen montiert Volumen log mehrere Container haben.

AFAIK, kann ich Container-ID erhalten aus/proc/1/cpuset Ich bin nicht sicher, ob irgendeines anderen Weg, um die Container-ID

Frage zu bekommen, ist, wie kann ich lesen, dass containerID und es verwenden, um zu erstellen das gemountete Volume (mit Ordnername) mit DOCKERFILE?

Auch, wenn es einen besseren Ansatz zu dem gibt, was ich versuche zu erreichen, lassen Sie mich bitte wissen, wie ich ein Neuling bin, docker.

+0

Möchten Sie die Container-ID vom Host oder aus einem Container lesen? Siehe 'docker ps' und' docker inspect' mindestens – user2915097

Antwort

0

Docker enthält eine logging mechanism, die Standardprotokolldateien aus der Gleichung entfernt. Alle an stdout und stderr gesendeten Daten werden von der Dockers Logging-Schnittstelle erfasst.

Es gibt eine Reihe von logging drivers, die Protokolle von Ihrem Docker-Host an einen zentralen Protokolldienst (Graylog, Syslog, AWS CloudWatch, ETW, Fluentd, Google Cloud, Splunk) senden können. Der json Treiber ist der Standard, der lokal auf dem Docker Host gespeichert wird. journald wird auch gespeichert und lokal zugänglich.

In nginx Konfiguration oder jedem Behälter für diese Angelegenheit, send the access log stdout or /dev/fd/1 and send the error log to stderr or /dev/fd/2

daemon off; 
error_log /dev/fd/2 info; 

http { 
    access_log /dev/fd/1; 
    ... 
} 

Sobald Sie in alle Container Anwendung dieses Konzepts beginnen, werden alle Log-Management-Anforderungen aus dem Behälter/Anwendungsebene entfernt und auf die nach oben gedrückt Gastgeber. Behälter meta data can be attached to logs. Es wird einfacher, den Protokollierungsmechanismus zu verschieben oder zu ändern. Der Wechsel zu gruppierten Setups wie Swarm wird weniger mühsam. Dies alles verbindet sich mit dem 1 Prozess pro Container Idee der Welt, die Docker schiebt.

Verwandte Themen