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

user5517392
la source
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.

BMitch
la source
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.

contrôle aléatoire
la source
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 *
Hernan Garcia
la source
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"

Senio Caires
la source
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
Lapin
la source
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.

Glen Pierce
la source
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é.

Emilia Tyl
la source
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.

Naanii
la source
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.

Rajusekhar Alle
la source
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
Marco Lackovic
la source
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

David Odhiambo
la source
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.

Sachin Verma
la source
0

docker ps -a

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

Ykimmy
la source