GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Registri Docker:cosa sono e come usarli (con esempi)

In questo articolo, ti mostreremo tutto ciò che devi sapere sui log Docker e su come utilizzarli.

La vita sarebbe molto più semplice se le applicazioni in esecuzione all'interno dei contenitori Docker si comportassero sempre correttamente. Quando le cose iniziano inevitabilmente ad andare storte, hai bisogno di informazioni diagnostiche per capire come e perché.

Se sei un amministratore di sistema e responsabile della creazione e della gestione di applicazioni containerizzate, la registrazione Docker è una delle più importanti per te. La gestione dei log è uno dei modi migliori per rivelare errori, facilitare il debug e ottimizzare le prestazioni dell'applicazione.

Quindi analizziamo la registrazione Docker e i suoi file di registro.

Cosa sono i registri Docker

Innanzitutto, devi capire come vengono generati i log.

In poche parole, I registri Docker sono l'output della console dei contenitori in esecuzione . Forniscono il stdout (output standard) e stderr (errore standard) flussi di processi eseguiti all'interno di un contenitore. In un container Docker osserva stdout e stderr e raccoglie l'output dai flussi, e questa è l'origine dei log del contenitore.

Accedere a Docker non è lo stesso che accedere altrove. In Docker, tutto viene scritto su stdout e stderr flussi viene inviato implicitamente a un driver di registrazione, che fornisce un meccanismo per accedere a questi flussi e inviare i registri a un file. Il driver predefinito per i registri Docker è "json-file", che scrive i registri nei file locali sull'host Docker in formato JSON.

Tutti i log archiviati nel contenitore verranno eliminati al termine o all'arresto.

L'esempio seguente mostra i log JSON creati utilizzando il driver del file json:

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

È possibile utilizzare il comando seguente per trovare il driver di registrazione predefinito corrente:

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

Dove sono archiviati i registri Docker

Se utilizzi il formato di registro predefinito che è JSON, i registri di un container possono essere trovati in /var/lib/docker/containers/ directory su un host Docker Linux.

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

Nel percorso mostrato sopra, <container-id> è l'id del contenitore in esecuzione. Se non sei sicuro di quale id è correlato a quale container, puoi eseguire il docker container ls comando per elencare tutti i contenitori in esecuzione.

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

Come visualizzare i registri Docker

Supponiamo che tu stia eseguendo un container e desideri accedere ai log Docker per questo container. Come puoi portare a termine questo compito?

Innanzitutto, puoi utilizzare il comando seguente per verificare la presenza di contenitori attualmente in esecuzione:

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

Questo comando stampa un elenco di contenitori in esecuzione. Nel nostro caso, il parametro più importante è CONTAINER ID , che utilizzeremo nel passaggio successivo.

Ora che sei sicuro che il tuo container sia in esecuzione, utilizziamo l'ID CONTAINER per vedere tutti i suoi registri.

Visualizza registri Docker

Per eseguire query sui log dei contenitori, utilizza i docker logs comando. È un comando che mostra tutte le informazioni registrate da un container in esecuzione. Con docker logs CONTAINER_ID , puoi vedere tutti i log trasmessi da uno specifico contenitore identificato da un ID univoco.

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"

Come seguire il registro del contenitore

Sebbene questo ti mostrerà i registri, non ti consentirà di visualizzare l'output del registro continuo. Usando il -f flag seguirà i log del contenitore Docker.

docker logs -f 99e9b6f4b1a3

Visualizza solo le ultime righe

In alcuni casi, vuoi verificare rapidamente solo le ultime 10 righe di log per il tuo contenitore. Puoi utilizzare il --tail opzione per specificare il numero di registri che desideri visualizzare.

docker logs --tail 10 99e9b6f4b1a3

Visualizza registri da una data specifica

Quando si ispezionano i registri Docker, spesso si desidera limitare l'output a un determinato numero di righe, per non essere inondati di informazioni.

Se vuoi vedere i log da un momento specifico fino ad ora, il --since l'opzione aiuta con questa attività.

Ad esempio, per visualizzare i log dei contenitori da 20 minuti, dovresti scrivere:

docker logs --since 20m 99e9b6f4b1a3

Puoi anche scrivere un formato data purché sia ​​fornito in formato ISO:

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

Visualizza registri fino a una data specifica

Per visualizzare i registri fino a una data specifica, utilizza il --until opzione con una data o una durata.

docker logs --until 20m 99e9b6f4b1a3

Oppure puoi anche fornire un formato data come hai fatto prima per il --since opzione.

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

Conclusione

I registri Docker ti aiutano a eseguire il debug e a risolvere i problemi più velocemente. In questo tutorial hai imparato cosa sono e come possono essere ispezionati e come utilizzare le opzioni per monitorarli.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Docker
  1. Come utilizzare i comandi "cat" e "tac" con esempi in Linux

  2. Cos'è Docker? Scopri come utilizzare i contenitori - Spiegazione con esempi

  3. Come utilizzare pipe e pipe con nome in Linux (con esempi)

  4. Come e perché utilizzare un host Docker remoto

  5. Come utilizzare l'opzione --since con il comando docker logs

Come installare e utilizzare Docker Compose su Ubuntu 20.04

Come installare e utilizzare Docker Compose su Ubuntu 22.04

Come installare e utilizzare Docker su Ubuntu 22.04

Che cos'è Docker Compose e come lo usi?

Come installare e utilizzare Docker su Ubuntu 20.04

Cos'è il PPA in Ubuntu Linux e come li uso