Docker folosește o arhitectură bazată pe daemon în care CLI se conectează la un proces de lungă durată care rulează separat pe mașina dvs. sau pe o gazdă la distanță. Comenzile CLI nu vor funcționa și containerele dvs. vor fi de obicei offline dacă daemonul se oprește.
Iată cum puteți verifica dacă demonul Docker este activat, astfel încât să puteți diagnostica probleme cu containerele și docker
comanda. Când demonul nu rulează, veți vedea un mesaj „Nu se poate conecta la demonul Docker” de fiecare dată când utilizați docker
CLI.
Verificarea cu Systemctl
Puteți verifica starea lui Docker cu systemctl
pe distribuțiile care utilizează Systemd pentru gestionarea serviciilor. Aceasta acoperă majoritatea sistemelor de operare populare, inclusiv Debian, Ubuntu, CentOS și Red Hat.
sudo systemctl status docker
Verificați ce este afișat sub „Activ”. Dacă vezi active (running)
în verde, daemonul Docker rulează și containerele dvs. ar trebui să fie activate.
O stare activă de inactive
indică faptul că serviciul s-a oprit. Încercați să-l aduceți alergând sudo systemctl start docker
. Starea ar trebui să se schimbe în active (running)
după ce începe demonul.
Dacă vedeți o stare de failed
în roșu, demonul nu a putut porni din cauza unei erori. Ar trebui să examinați jurnalele de pornire ale serviciului afișate mai târziu în systemctl
ieșirea comenzii, deoarece acestea conțin de obicei sugestii care vă permit să aflați ce a mers prost.
Când nu există o rezoluție evidentă disponibilă, porniți manual demonul în modul de depanare pentru a obține mai multe informații despre rutina de pornire.
sudo dockerd --debug
Reporniți mașina gazdă sau reporniți serviciul Docker cu systemctl restart docker
poate ajuta la atenuarea problemelor tranzitorii.
Inspectarea detaliilor procesului
O altă modalitate de a verifica dacă un demon Docker rulează este prin inspectarea fișierului său ID de proces. Demonul își scrie ID-ul procesului în /var/run/docker.pid
de fiecare dată când pornește. Când acest fișier există, Docker ar trebui să ruleze și să fie pregătit pentru conexiunile CLI.
cat /var/run/docker.pid
Puteți utiliza această tehnică pentru a crea scripturi programatice care verifică dacă demonul este în viață. Citirea fișierului vă oferă ID-ul pe care îl puteți utiliza cu instrumente precum top
pentru a obține mai multe informații despre procesul Docker:
cat /var/run/docker.pid # process id = 1000 top -p 1000
Puteți obține, de asemenea, ID-ul procesului cupidof
comanda. Aceasta acceptă un nume de proces și returnează primul ID de potrivire:
pidof dockerd # process id = 1000 # view information with top top -p `pidof dockerd`
Există un demon Docker activ pe mașina dvs. dacă top
se potriveste a dockerd
proces. Acest lucru poate fi mai fiabil decât căutat docker.pid
– dacă demonul se blochează, docker.pid
ar putea rămâne în urmă după dispariția procesului.
Gestionarea fișierelor de proces blocate
Demonul va refuza să repornească atunci când este prezent un fișier PID. Acest lucru vă poate bloca într-o buclă de repornire dacă fișierul este orfan de la o rulare anterioară. Veți vedea acest mesaj când rulați dockerd
:
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
Utilizare pidof dockerd
pentru a se asigura că Docker s-a oprit efectiv. Continuați dacă comanda nu emite nicio ieșire, confirmând că nu există niciun proces de rulare.
Alerga sudo rm /var/run/docker.pid
pentru a șterge vechiul fișier ID proces. Demonul ar trebui să înceapă acum cu succes data viitoare când rulați dockerd
sau service docker start
.
Problemele cu fișierele PID sunt întâlnite frecvent atunci când faceți instantanee unei mașini virtuale și apoi creați o nouă instanță din imagine. Fișierul de proces va fi inclus în instantaneu, determinând demonul Docker din noua VM să creadă că rulează deja.
Verificarea containerelor individuale
Starea containerelor individuale este accesată prin docker ps
comanda. Aceasta emite un tabel care conține detaliile tuturor containerelor care rulează în prezent.
docker ps
Combinați docker ps
comanda cu grep
pentru a verifica cu ușurință dacă un anumit container rulează după ID sau nume:
docker ps | grep my-container-name
Acum rezultatul va fi filtrat pentru a afișa containerul pe care l-ați selectat. Nu vor exista înregistrări dacă containerul nu rulează.
Containerele oprite sunt afișate folosind docker ps -a
. Un container oprit poate fi pornit cu docker start
comanda:
docker start my-container
Containerul se va muta apoi în obișnuit docker ps
ieșire. O poți opri din nou cu docker stop my-container
.
Concluzie
Aveți la dispoziție mai multe opțiuni atunci când doriți să aflați dacă Docker rulează. Există managerul de servicii al sistemului dvs. de operare, docker.pid
fișier și instrumente regulate de inspecție a proceselor, cum ar fi top
și pidof
.
Când vine vorba de containere individuale, docker ps
oferă lista cu tot ce rulează în prezent pe gazda dvs. Informații mai cuprinzătoare despre starea oricărui container pot fi culese cu docker inspect container-name
care oferă detalii despre configurația rețelei, volumele și etichetele în format JSON.