Come verificare se il demone Docker o un contenitore è in esecuzione

0
515

Docker utilizza un'architettura basata su daemon in cui la CLI si connette a un processo vissuto in esecuzione separatamente sulla tua macchina o su un host remoto. I comandi CLI non funzioneranno e i tuoi contenitori di solito andranno offline se il demone si ferma.

Ecco come verificare se il demone Docker è attivo in modo da poter diagnosticare i problemi con contenitori e il comando docker. Quando il daemon’non è in esecuzione, vedrai il messaggio “impossibile connettersi al daemon Docker” messaggio ogni volta che si utilizza la docker CLI.

Verifica con Systemctl

Puoi controllare lo stato di Docker con systemctl sulle distribuzioni che utilizzano Systemd per la gestione dei servizi. Questo copre la maggior parte dei sistemi operativi più diffusi tra cui Debian, Ubuntu, CentOS e Red Hat.

sudo systemctl status docker

Controlla cosa viene visualizzato in “Attivo.” Se vedi attivo (in esecuzione) in verde, il demone Docker è in esecuzione e i tuoi contenitori dovrebbero essere attivi.

Uno stato attivo di inattivo indica che il servizio è stato interrotto. Prova a farlo apparire eseguendo sudo systemctl start docker. Lo stato dovrebbe cambiare in attivo (in esecuzione) dopo l'avvio del daemon.

Annuncio

Se vedi lo stato di fail in rosso, il daemon non è stato avviato a causa di un errore. Dovresti rivedere i log di avvio del servizio mostrati più avanti nell'output del comando systemctl poiché di solito contengono suggerimenti che ti consentono di capire cosa è andato storto.

Quando non è disponibile una risoluzione ovvia, avvia manualmente il demone in modalità di debug per ottenere maggiori informazioni sulla sua routine di avvio.

sudo dockerd –debug

Riavviare la macchina host o riavviare il servizio Docker con systemctl il riavvio della finestra mobile può aiutare anche ad alleviare i problemi temporanei.

Ispezione dei dettagli del processo

Un altro modo per verificare la presenza di un demone Docker in esecuzione è ispezionare il suo file ID di processo. Il demone scrive il suo ID di processo in /var/run/docker.pid ogni volta che si avvia. Quando questo file esiste, Docker dovrebbe essere in esecuzione e pronto per le connessioni CLI.

cat /var/run/docker.pid

Puoi usare questa tecnica per creare script programmatici che controllano se il demone è attivo . La lettura del file fornisce l'ID che è possibile utilizzare con strumenti come top per ottenere maggiori informazioni sul processo Docker:

cat /var/run/docker.pid # id processo = 1000 top -p 1000

< img src="http://www.cloudsavvyit.com/pagespeed_static/1.JiBnMqyl6S.gif" />

Puoi anche ottenere l'ID del processo con thepidofcommand. Questo accetta un nome di processo e restituisce il primo ID corrispondente:

pidof dockerd # id processo = 1000 # visualizza le informazioni con top top -p `pidof dockerd` Annuncio

C'è un Docker attivo demone sulla tua macchina se top corrisponde a un processo dockerd. Questo può essere più affidabile rispetto alla ricerca di docker.pid – se il demone si arresta in modo anomalo, docker.pid potrebbe rimanere indietro dopo che il processo è terminato.

Gestione dei file di processo bloccati

Il demone si rifiuterà di riavviarsi quando è presente un file PID. Questo potrebbe bloccarti in un ciclo di riavvio se il file è effettivamente orfano da un'esecuzione precedente. Vedrai questo messaggio durante l'esecuzione di dockerd:

impossibile avviare il demone: file pid trovato, assicurati che la finestra mobile non sia in esecuzione o elimina /var/run/docker.pid

Utilizza pidof dockerd per assicurarti che Docker& #8217;in realtà si è fermato. Procedi se il comando non emette alcun output, confermando che non ci sono processi in esecuzione.

Esegui sudo rm /var/run/docker.pid per eliminare il vecchio file ID di processo. Il demone dovrebbe ora avviarsi correttamente la prossima volta che esegui dockerdor service docker start.

I problemi di file PID si verificano comunemente quando si esegue uno snapshot di una macchina virtuale e quindi si crea una nuova istanza dall'immagine. Il file del processo verrà incluso nello snapshot, facendo credere al demone Docker nella nuova VM che sia già in esecuzione.

Controllo dei singoli contenitori

Lo stato dei singoli contenitori è accessibile tramite il comando docker ps. Questo emette una tabella contenente i dettagli di tutti i contenitori attualmente in esecuzione.

docker ps

Annuncio

Combina il comando docker ps con grep per controllare facilmente se un container specifico è in esecuzione per ID o nome:

docker ps | grep nome-contenitore

Ora l'output verrà filtrato per mostrare il contenitore che hai selezionato. Non ci saranno record se il contenitore non è in esecuzione.

I contenitori bloccati vengono visualizzati utilizzando la finestra mobile ps -a. Un contenitore interrotto può essere avviato con il comando docker start:

docker start my-container

Il contenitore si sposterà quindi nel normale output di docker ps. Puoi fermarlo di nuovo con docker stop my-container.

Conclusione

Hai diverse opzioni da considerare quando vuoi sapere se Docker è in esecuzione. C'è il gestore dei servizi del tuo sistema operativo, il file docker.pid e i normali strumenti di ispezione dei processi come top e pidof.

Quando si tratta di singoli contenitori, docker ps fornisce il elenco di tutto ciò che è attualmente in esecuzione sul tuo host. Informazioni più complete sullo stato di qualsiasi contenitore possono essere raccolte con docker inspect nome-contenitore che fornisce dettagli su configurazione di rete, volumi ed etichette in formato JSON.