Controleren of de Docker Daemon of een container actief is?

0
176

Docker gebruikt een op daemons gebaseerde architectuur waarbij de CLI verbinding maakt met een geleefd proces dat afzonderlijk op uw computer of een externe host wordt uitgevoerd. CLI-commando's werken niet en uw containers gaan meestal offline als de daemon stopt.

Hier leest u hoe u kunt controleren of Docker's daemon actief is, zodat u problemen kunt diagnosticeren met containers en het docker-commando. Als de daemon niet actief is, ziet u een 'kan geen verbinding maken met de Docker-daemon'. bericht elke keer dat u de docker-CLI gebruikt.

Controleren met Systemctl

U kunt de status van Docker controleren met systemctl op distributies die Systemd gebruiken voor servicebeheer. Dit omvat de meeste populaire besturingssystemen, waaronder Debian, Ubuntu, CentOS en Red Hat.

sudo systemctl status docker

Controleer wat er wordt weergegeven onder “Actief.” Als u actief (actief) in het groen ziet, is de Docker-daemon actief en moeten uw containers actief zijn.

Een actieve staat van inactief geeft aan dat de service is gestopt. Probeer het naar voren te brengen door sudo systemctl start docker uit te voeren. De status zou moeten veranderen in actief (actief) nadat de daemon is gestart.

Advertentie

Als je de status mislukt in rood ziet, kon de daemon niet starten vanwege een fout. U moet de opstartlogboeken van de service bekijken die later in de uitvoer van de systemctl-opdracht worden weergegeven, omdat deze meestal hints bevatten waarmee u kunt achterhalen wat er mis is gegaan.

Als er geen duidelijke resolutie beschikbaar is, start u de daemon handmatig in debugging-modus om meer informatie te krijgen over de opstartroutine.

sudo dockerd –debug

Uw hostmachine opnieuw opstarten of de Docker-service opnieuw opstarten met systemctl herstart docker kan ook tijdelijke problemen helpen verlichten.

Procesdetails inspecteren

Een andere manier om te controleren op een actieve Docker-daemon is door het proces-ID-bestand te inspecteren. De daemon schrijft zijn proces-ID elke keer dat hij opstart naar /var/run/docker.pid. Als dit bestand bestaat, zou Docker moeten draaien en klaar moeten zijn voor CLI-verbindingen.

cat /var/run/docker.pid

U kunt deze techniek gebruiken om programmatische scripts te maken die controleren of de daemon actief is . Als u het bestand leest, krijgt u de ID die u kunt gebruiken met tools zoals top om meer informatie te krijgen over het Docker-proces:

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

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

U kunt de proces-ID ook verkrijgen met thepidofcommand. Dit accepteert een procesnaam en retourneert de eerste overeenkomende ID:

pidof dockerd # process id = 1000 # bekijk informatie met top top -p `pidof dockerd` Advertentie

Er is een actieve Docker daemon op uw computer als top overeenkomt met een dockerd-proces. Dit kan betrouwbaarder zijn dan te zoeken naar docker.pid – als de daemon crasht, kan docker.pid achterblijven nadat het proces is afgelopen.

Omgaan met vastgelopen procesbestanden

De daemon zal weigeren opnieuw op te starten als er een PID-bestand aanwezig is. Dit kan ervoor zorgen dat u vast komt te zitten in een herstartlus als het bestand daadwerkelijk wees is geworden van een eerdere uitvoering. U ziet dit bericht wanneer dockerd wordt uitgevoerd:

kan daemon niet starten: pid-bestand gevonden, controleer of docker niet actief is of verwijder /var/run/docker.pid

Gebruik pidof dockerd om te controleren of Docker& #8217 is eigenlijk gestopt. Ga verder als de opdracht geen uitvoer afgeeft, om te bevestigen dat er geen lopend proces is.

Voer sudo rm /var/run/docker.pid uit om het oude proces-ID-bestand te verwijderen. De daemon zou nu met succes moeten starten de volgende keer dat u dockerdor service docker start uitvoert.

PID-bestandsproblemen komen vaak voor wanneer u een momentopname maakt van een virtuele machine en vervolgens een nieuwe instantie van de afbeelding maakt. Het procesbestand wordt in de snapshot opgenomen, waardoor de Docker-daemon in de nieuwe VM denkt dat deze al actief is.

Individuele containers controleren

De status van individuele containers is toegankelijk via het docker ps-commando. Dit geeft een tabel weer met de details van alle momenteel actieve containers.

docker ps

Advertentie

Combineer de opdracht docker ps met grep om eenvoudig te controleren of een specifieke container wordt uitgevoerd op ID of naam:

docker ps | grep mijn-container-naam

Nu wordt de uitvoer gefilterd om de container weer te geven die u hebt geselecteerd. Er zijn geen records als de container niet actief is.

Gestopte containers worden weergegeven met behulp van docker ps -a. Een gestopte container kan worden gestart met het docker start commando:

docker start my-container

De container zal dan naar de reguliere docker ps output gaan. Je kunt het weer stoppen met docker stop my-container.

Conclusie

Je hebt verschillende opties om te overwegen als je wilt weten of Docker is rennen. Er is de servicemanager van uw besturingssysteem, het docker.pid-bestand en reguliere procesinspectietools zoals top en pidof.

Als het gaat om individuele containers, biedt docker ps de lijst met alles wat momenteel op uw host draait. Uitgebreidere informatie over de status van elke container kan worden verzameld met docker inspect container-name, die details geeft over netwerkconfiguratie, volumes en labels in JSON-indeling.