Comment vérifier si Docker est en cours d'exécution ou non


96

Je suis nouveau dans docker. J'écris un script simple pour docker. J'ai besoin de vérifier si docker fonctionne ou non. Existe-t-il une commande à vérifier avec le nom du conteneur


3
Toute commande docker (sauf docker -v), comme docker ps
Glen Pierce

docker attach containerName
Mattia Dinosaur

ou essayez docker ps
Mattia Dinosaur

2
sudo systemctl status docker
Duk

docker ps----- Cette commande n'affichera que les conteneurs EN COURS
Suhaib

Réponses:


101

Si vous recherchez un conteneur spécifique, vous pouvez exécuter:

if [ "$( docker container inspect -f '{{.State.Running}}' $container_name )" == "true" ]; then ...

Pour éviter les problèmes avec un conteneur qui se trouve dans une boucle de crash et qui redémarre constamment pour montrer qu'il est en place, ce qui précède peut être amélioré en vérifiant le Statuschamp:

if [ "$( docker container inspect -f '{{.State.Status}}' $container_name )" == "running" ]; then ...

Si vous voulez savoir si dockerd s'exécute lui-même sur la machine locale et que systemd est installé, vous pouvez exécuter:

systemctl show --property ActiveState docker

Vous pouvez également vous connecter au docker avec docker infoou docker versionet ils obtiendront une erreur si le démon n'est pas disponible.


comment mettriez-vous à l' docker inspect …intérieur une ifdéclaration d'un script bash?
François Romain

15
if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
BMitch

2
J'utilise docker inspect -f '{{.State.Restarting}}' $container_namedepuis que je démarre mon conteneur avec une politique de redémarrage, bien qu'ici "vrai" soit ce que vous voulez éviter.
stav meir

4
Bash et docker se plaindront de l' ifinstruction ci-dessus , lorsque le conteneur n'est pas en cours d'exécution. Cela cache le rejet indésirable du faux cas: if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Trevor

1
@MarcoLackovic sonne comme si vous aviez manqué la partie "vous avez installé systemd" ci-dessus.
BMitch

43

J'ai fini par utiliser

docker info

pour vérifier avec un script bash si le moteur docker est en cours d'exécution.


4
Cette réponse est sous-estimée. C'est multiplateforme et passe / échoue rapidement.
Andy Fleming

docker info > /dev/null 2>&1si vous n'avez pas besoin de la sortie
buggymcbugfix

22

vous pouvez vérifier l'état du docker en utilisant: systemctl is-active docker

  ~  systemctl is-active docker
active

vous pouvez l'utiliser comme:

  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
is alive :)

  ~  sudo systemctl stop docker

  ~  if [ "$(systemctl is-active docker)" = "active" ]; then echo "is alive :)" ; fi
 * empty response *

Cela ne répond pas à la question. "pour vérifier avec le nom du conteneur"
jens.klose

ouais il semble que la question soit ambiguë, pour vérifier si le conteneur est en cours d'exécution, vous devez utiliser docker ps --filter name=pattern, alors vous pouvez formater la sortie pour vérifier uniquement l'état en ajoutant ce drapeau:--format {{.Status}}
Hernan Garcia

15

Lister tous les conteneurs:

docker container ls -a

ls = liste
-a = tout

Vérifiez la colonne "état"


1
C'est ce dont j'avais besoin, car cela fonctionne sur toutes les plateformes !!
Rolljee

facile et simple ... TRAVAILLÉ.
RMati

14

Pour les utilisateurs d'OS X (Mojave 10.14.3)

Voici ce que j'utilise dans mon script Bash pour tester si Docker est en cours d'exécution ou non

# Check if docker is running
if ! docker info >/dev/null 2>&1; then
    echo "Docker does not seem to be running, run it first and retry"
    exit 1
fi

1
J'ai remanié cela pour supprimer l' if [[ $? -ne 0 ]]anti
tripleee

7

Toute commande docker (sauf docker -v), comme docker ps si Docker est en cours d'exécution, vous obtiendrez une réponse valide, sinon vous obtiendrez un message qui inclut "Votre démon docker est-il opérationnel?"

Vous pouvez également consulter votre gestionnaire de tâches.


7

Parfois, vous ne connaissez pas le nom complet du conteneur, dans ce cas, c'est ce qui a fonctionné pour moi:

if docker ps | grep -q keyword
then 
    echo "Running!"
else
    echo "Not running!"
    exit 1
fi

Nous listons tous les processus de conteneur en cours d'exécution ( docker ps -anous montrerions également ceux qui ne sont pas en cours d'exécution, mais ce n'est pas ce dont j'avais besoin), nous recherchons un mot spécifique ( greppartie) et échouons simplement si nous ne trouvons pas au moins un conteneur en cours d'exécution dont le nom contient notre mot-clé.


Refactorisé pour supprimer une collection massive d' anti-modèles de programmation shell.
tripleee

5

Vous pouvez vérifier avec cette commande systemctl status dockerqu'il affichera l'état du docker. Si vous voulez commencer, vous pouvez utiliser à la systemctl start dockerplace de systemctlvous pouvez également essayer avec service, service docker statuset service docker startrespectivement.


5
Cette réponse suppose que l'utilisateur final utilise systemdcomme init.
Rafael

systemctl status dockercorrectement montrer si le service docker est en cours d'exécution. Je vous remercie.
imsrgadich

3

Vous pouvez également vérifier si un conteneur Docker particulier est en cours d'exécution ou non à l'aide de la commande suivante:

docker inspect postgres | grep "Running"

Cette commande vérifiera si, par exemple, mon conteneur postgres est en cours d'exécution ou non et retournera la sortie comme "Running": true

J'espère que cela t'aides.


Ceci est exactement ce que je cherchais. Et il fonctionne. (C'est bien quand les gens qui votent contre quelque chose disent pourquoi, afin que les noobs puissent apprendre une meilleure étiquette SO. :))
allenjom

Je n'ai pas voté contre, mais "Erreur: aucun objet de ce type: postgres"
ged

3

Courir:

docker version

Si docker est en cours d' exécution, vous verrez:

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Server: Docker Engine - Community
 Engine:
  Version:          ...
 [omitted]

Si le docker n'est pas en cours d' exécution, vous verrez:

Client: Docker Engine - Community
 Version:           ...
 [omitted]

Error response from daemon: Bad response from Docker engine


1

sur un Mac, vous pouvez voir l'image:

entrez la description de l'image ici

si vous cliquez avec le bouton droit sur l'icône du menu fixe, vous voyez:

entrez la description de l'image ici

alternativement:

docker ps

et

docker run hello-world


0

Comment j'enregistre SSH.Run:

systemctl

Si réponse: Impossible d'obtenir la connexion D-Bus: opération non autorisée

C'est un docker ou un conteneur WSL.


0

docker ps -a

Vous pouvez voir tous les conteneurs Docker, qu'ils soient vivants ou morts.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.