GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Protokoly Docker:Co jsou a jak je používat (s příklady)

V tomto článku vám ukážeme vše, co potřebujete vědět o protokolech Docker a jak s nimi pracovat.

Život by byl mnohem jednodušší, kdyby se aplikace běžící v kontejnerech Docker vždy chovaly správně. Když se věci nevyhnutelně začnou kazit, potřebujete diagnostické informace, abyste zjistili, jak a proč.

Pokud jste správce systému a odpovídáte za vytváření a správu kontejnerových aplikací, je pro vás protokolování dockerů jedním z nejdůležitějších. Práce s protokoly je jedním z nejlepších způsobů, jak pomoci odhalit chyby, pomoci při ladění a optimalizovat výkon vaší aplikace.

Pojďme se tedy ponořit do protokolování Docker a jeho protokolových souborů.

Co jsou protokoly Dockeru

Nejprve musíte pochopit, jak se generují protokoly.

Stručně řečeno, Protokoly Dockeru jsou výstupem konzoly běžících kontejnerů . Poskytují stdout (standardní výstup) a stderr (standardní chyba) toky procesů, které běží uvnitř kontejneru. V kontejneru Docker sleduje stdout a stderr a shromažďuje výstup z proudů a to je zdroj protokolů kontejneru.

Přihlášení do Dockeru není totéž jako přihlášení jinde. V Dockeru se vše zapisuje do stdout a stderr datové proudy je implicitně odesláno do protokolovacího ovladače, který poskytuje mechanismus pro přístup k těmto proudům a odesílání protokolů do souboru. Výchozí ovladač pro protokoly Docker je „json-file“, který zapisuje protokoly do místních souborů na hostiteli Docker ve formátu JSON.

Všechny protokoly uložené v kontejneru budou smazány při jeho ukončení nebo vypnutí.

Níže uvedený příklad ukazuje protokoly JSON vytvořené pomocí ovladače souboru json:

{"log":"Adding password for user webdav\n","stream":"stderr","time":"2021-08-01T15:58:05.329724917Z"}

K nalezení aktuálního výchozího ovladače protokolování můžete použít následující příkaz:

docker info --format '{{.LoggingDriver}}'
json-file

Kde jsou uloženy protokoly Docker

Pokud používáte výchozí formát protokolu, což je JSON, protokoly kontejneru naleznete v /var/lib/docker/containers/ adresář na hostiteli Linux Docker.

/var/lib/docker/containers/<container-id>/<container-id>-json.log

Ve výše uvedené cestě <container-id> je id běžícího kontejneru. Pokud si nejste jisti, které id souvisí s kterým kontejnerem, můžete spustit docker container ls příkaz k zobrazení seznamu všech spuštěných kontejnerů.

docker container ls
CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS          PORTS                                NAMES
99e9b6f4b1a3   jbbodart/alpine-nginx-webdav   "/bin/sh -c '/entryp…"   51 minutes ago   Up 51 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp    webdav

Jak zobrazit protokoly Docker

Řekněme, že jste spustili kontejner a chcete získat přístup k protokolům Docker pro tento kontejner. Jak můžete tento úkol splnit?

Nejprve můžete pomocí následujícího příkazu zkontrolovat aktuálně spuštěné kontejnery:

docker container ls
CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS          PORTS                                NAMES
99e9b6f4b1a3   jbbodart/alpine-nginx-webdav   "/bin/sh -c '/entryp…"   58 minutes ago   Up 58 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp    webdav

Tento příkaz vytiskne seznam spuštěných kontejnerů. V našem případě je nejdůležitějším parametrem CONTAINER ID , který použijeme v dalším kroku.

Nyní, když jste si jisti, že váš kontejner běží, použijte CONTAINER ID zobrazit všechny jeho protokoly.

Zobrazit protokoly Docker

K dotazu na protokoly kontejneru použijte docker logs příkaz. Je to příkaz, který zobrazuje všechny informace zaznamenané běžícím kontejnerem. S docker logs CONTAINER_ID , můžete vidět všechny protokoly vysílané konkrétním kontejnerem identifikovaným jedinečným ID.

docker logs 99e9b6f4b1a3
172.17.0.1 - webdav [01/Aug/2021:18:38:39 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
2021/08/01 18:39:09 [info] 10#10: *3 client 172.17.0.1 closed keepalive connection
172.17.0.1 - webdav [01/Aug/2021:18:39:09 +0000] "PUT /docker-logs.png HTTP/1.1" 201 25 "-" "curl/7.78.0"

Jak sledovat protokol kontejneru

Ačkoli vám to zobrazí protokoly, neumožní vám to zobrazit nepřetržitý výstup protokolu. Pomocí -f příznak bude následovat protokoly kontejneru Docker.

docker logs -f 99e9b6f4b1a3

Zobrazit pouze nejnovější řádky

V některých případech chcete rychle ověřit pouze posledních 10 řádků protokolu pro váš kontejner. Můžete použít --tail možnost zadat počet protokolů, které chcete zobrazit.

docker logs --tail 10 99e9b6f4b1a3

Zobrazit protokoly od určitého data

Když kontrolujete své protokoly Docker, často chcete omezit výstup na daný počet řádků, abyste nebyli zahlceni informacemi.

Pokud chcete vidět protokoly od určitého okamžiku až do teď, --since Tato možnost pomáhá s tímto úkolem.

Chcete-li například zobrazit protokoly kontejneru od 20 minut, napište:

docker logs --since 20m 99e9b6f4b1a3

Můžete také napsat formát data, pokud je poskytován ve formátu ISO:

docker logs --since 2021-07-19T10:00:00 99e9b6f4b1a3

Zobrazení protokolů do určitého data

Chcete-li zobrazit protokoly do určitého data, použijte --until možnost s datem nebo dobou trvání.

docker logs --until 20m 99e9b6f4b1a3

Nebo můžete také zadat formát data jako dříve pro --since možnost.

docker logs --until 
2021-07-19T10:00:00 99e9b6f4b1a3

Závěr

Protokoly Dockeru vám pomohou rychleji ladit a odstraňovat problémy. V tomto tutoriálu jste se naučili, co to jsou a jak je lze kontrolovat a používat možnosti k jejich monitorování.

Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.


Docker
  1. Co je Docker? Naučte se používat kontejnery – vysvětleno s příklady

  2. Jak používat Pipes a Named Pipes v Linuxu (s příklady)

  3. Jak a proč používat vzdáleného hostitele dockeru

  1. Jak používat příkazy „cat“ a „tac“ s příklady v Linuxu

  2. Jak nainstalovat a používat Docker Compose na CentOS

  3. Co jsou režimy SELinux a jak je nastavit

  1. Tmux Tutorial:Jak nainstalovat a používat s příklady příkazů

  2. Co jsou svazky Docker a jak je používáte?

  3. Jak používat volbu --since s příkazem docker logs