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

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

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

Ecco come verificare se il daemon di Docker è attivo in modo da poter diagnosticare problemi con i contenitori e la dockerd comando. Quando il demone non è in esecuzione, vedrai un messaggio "impossibile connettersi al demone Docker" ogni volta che usi la dockerd CLI.

Verifica con Systemctl

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

sudo systemctl status docker

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

Uno stato attivo di inactive indica che il servizio è stato interrotto. Prova a visualizzarlo eseguendo sudo systemctl start docker . Lo stato dovrebbe cambiare in active (running) dopo l'avvio del demone.

Se vedi uno stato di failed in rosso, il demone non può avviarsi a causa di un errore. Dovresti rivedere i log di avvio del servizio mostrati più avanti in systemctl output del comando poiché di solito contengono suggerimenti che ti consentono di capire cosa è andato storto.

Quando non è disponibile una risoluzione evidente, 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 restart docker può aiutare anche ad alleviare problemi transitori.

Ispezione dei dettagli del processo

Un altro modo per verificare la presenza di un demone Docker in esecuzione è ispezionare il suo file ID processo. Il demone scrive il suo ID 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 è vivo. La lettura del file ti fornisce l'ID che puoi utilizzare con strumenti come top per ottenere maggiori informazioni sulla procedura Docker:

cat /var/run/docker.pid

# process id = 1000

top -p 1000

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

pidof dockerd

# process id = 1000

# view information with top
top -p `pidof dockerd`

C'è un demone Docker attivo sulla tua macchina se top corrisponde a un dockerd processi. Questo può essere più affidabile che cercare docker.pid – se il demone si arresta in modo anomalo, docker.pid potrebbe rimanere indietro al termine del processo.

Gestione dei file di processo bloccati

Il demone 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 :

failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid

Usa pidof dockerd per assicurarsi che Docker sia effettivamente fermato. Procedi se il comando non emette alcun output, confermando che non è in corso alcun processo.

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

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

Controllo dei singoli contenitori

È possibile accedere allo stato dei singoli contenitori tramite la docker ps comando. Viene emessa una tabella contenente i dettagli di tutti i container attualmente in esecuzione.

docker ps

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

docker ps | grep my-container-name

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

I contenitori interrotti vengono visualizzati utilizzando docker ps -a . Un container interrotto può essere avviato con docker start comando:

docker start my-container

Il contenitore si sposterà quindi nella normale docker ps produzione. Puoi interromperlo 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 docker.pid file e strumenti di ispezione di processo regolari come top e pidof .

Quando si tratta di singoli contenitori, docker ps fornisce l'elenco di tutto ciò che è attualmente in esecuzione sul tuo host. Informazioni più complete sullo stato di qualsiasi container possono essere raccolte con docker inspect container-name che fornisce dettagli sulla configurazione di rete, i volumi e le etichette in formato JSON.


Docker
  1. Come mantenere in funzione i contenitori Docker quando il demone si ferma

  2. Come eseguire un comando su un contenitore Docker in esecuzione

  3. Come assegnare un IP statico a un contenitore Docker

  4. Come elencare i contenitori Docker

  5. Come modificare il fuso orario per un container Docker

Come eseguire PHPMyAdmin in un contenitore Docker

Come eseguire Grafana in un contenitore Docker

Come creare un'immagine Docker da un contenitore in esecuzione

Come creare volumi Docker su Windows in modo semplice

Come configurare un container Docker Apache

Come eseguire i contenitori Docker