142 votes

Comment vérifier si le moteur Docker et un conteneur Docker sont en cours d'exécution ?

Dans un script, je dois vérifier :

a) Le moteur Docker fonctionne-t-il ?
b) Étant donné un nom de conteneur, ce conteneur docker est-il en cours d'exécution ?

[la formulation initiale de cette question était ambiguë, certaines personnes l'interprétant comme "vérifier le moteur docker", et d'autres comme "vérifier le conteneur docker"].

5 votes

Toute commande docker (sauf docker -v), comme docker ps

0 votes

docker attach containerName

2 votes

Ou essayez docker ps

143voto

BMitch Points 3744

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 liés à un conteneur qui se trouve dans une boucle d'arrêt et qui redémarre constamment sans montrer qu'il est en marche, la méthode ci-dessus peut être améliorée en vérifiant l'attribut Status champ :

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 vous avez installé systemd, vous pouvez exécuter :

systemctl show --property ActiveState docker

Vous pouvez également vous connecter à Docker avec docker info o docker version et ils se tromperont si le démon n'est pas disponible.

0 votes

Comment mettriez-vous le docker inspect … à l'intérieur d'un if d'un script bash ?

16 votes

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

0 votes

Correction : "docker version" produit une sortie régulière même si docker n'est pas en cours d'exécution. "docker info" affiche une erreur indiquant que docker n'est pas en cours d'exécution.

72voto

randomcontrol Points 31

J'ai fini par utiliser

docker info

pour vérifier avec un script bash si le moteur docker est en marche.

9 votes

Cette réponse est sous-estimée. Elle est multiplateforme et passe/échappe rapidement.

4 votes

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

25voto

Hernan Garcia Points 642

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 *

0 votes

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

0 votes

Oui, il semble que la question soit ambiguë, pour vérifier si le conteneur fonctionne, vous devez utiliser docker ps --filter name=pattern alors vous pouvez formater la sortie pour vérifier seulement le statut en ajoutant ce drapeau : --format {{.Status}}

23voto

Senio Caires Points 76

Dressez la liste de tous les conteneurs :

docker container ls -a

ls = liste
-a = tous

Vérifiez la colonne "statut".

1 votes

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

0 votes

Facile et simple ... TRAVAILLÉ.

14voto

Glen Pierce Points 1417

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 comprenant "Is your docker daemon up and running ?".

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X