Naplózás Docker konténerekben

Borítókép címmel és neon fény hatású háromszöggel PowerPoint-tal generálva.

A Docker konténerekben futó alkalmazások naplóbejegyzéseit általában a "docker logs" paranccsal kérdezhetjük le.
Hogyha ezt lefutattom a parancssorban, akkor minden naplóbejegyzés ki fog kerülni a képernyőre. A kérdés az, hogy hogy kerül ide. Honnan tudja a "docker logs", hogy honnan kell a naplóbejegyzéseket lekérdezni? A mellékelt videóban bemutatom a Docker konténereknél a naplóbejegyzések kezelésének alapjait, majd benézünk a motorháztető alá, miért is működik a logok lekérdezése és hogyan érhetjük el az aktuális logokat akkor is, ha a korábbi logok mentése le van tiltva.

A használt parancsok:

Konténer indítása

docker run -d --name httpd -p 80:80 httpd:2.4

Weblap elérése curl-lel

curl http://localhost

Naplóbejegyzések lekérdezése

docker logs httpd

Standard output és standard error stream-ekhez tartozó azonosító lekérdezése

ls -l /dev/stdout
ls -l /dev/stderr

Stream-ek teszteléséhez használható shell streams.sh szkript

#/bin/bash

echo "output" > /dev/stdout
echo "error" > /dev/stderr

Futtatási jogosultság adás a szkriptre

chmod +x streams.sh

Csak az error stream megjelenítése az output stream elrejtésével

./streams.sh 1> /dev/null

Csak az output stream megjelenítése az error stream elrejtésével

./streams.sh 2> /dev/null

Mindkét stream fájlba irányítása

./streams.sh 1> out.log 2> err.log

Az előző 3 parancsot a docker logs httpd paranccsal is le lehet futtatni a streams.sh helyett.

A JSON naplófájl útvonalának lekérdezése

docker container inspect httpd --format '{{ .LogsPath }}'

A JSON naplófájlt megnyitása

sudo cat $(docker container inspect httpd --format '{{ .LogsPath }}')

Konténer törlése

docker rm -f httpd

Konténer indítása a logok mentésének letiltásával

docker run -d --name httpd -p 80:80 --log-driver none  httpd:2.4

Konténerben futó process ID-jának lekérdezése

docker container inspect httpd --format '{{ .Sate.Pid }}'

A /proc mappában levő, a konténerben futó processhez tartozó standard error és standard output stream-ek mappájába belépés

sudo su
cd $(docker container inspect httpd --format '{{ .Sate.Pid }}')/fd

Az aktuális standard output elkérése a processztől

cat 1

Új terminálban az előző parancs ablakába a naplóbejegyzések küldéséhez a weboldal ismételt elérése

curl http://localhost

Végszó

Ha tetszett a videó, kérlek, küldj egy like-ot a youtube-on, vagy akár itt is. Ha szeretnél legközelebb is hasonló tartalmakról videókat, iratkozz fel a Youtube csatornára, ami mindig egy indirekt jelzés számomra, hogy ideje nekiállni a következő videónak :) Követheted a Facebook oldalt is és szokás szerint bármelyik csatornán szeretettel várom az észrevételeket, kéréseket.

Kategóriák: 
Megosztás/Mentés