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
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:
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.
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}}
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.
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 1fi
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é.
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.
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"
docker attach containerName
docker ps
docker ps
----- Cette commande n'affichera que les conteneurs EN COURSRéponses:
Si vous recherchez un conteneur spécifique, vous pouvez exécuter:
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
Status
champ: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:
Vous pouvez également vous connecter au docker avec
docker info
oudocker version
et ils obtiendront une erreur si le démon n'est pas disponible.la source
docker inspect …
intérieur uneif
déclaration d'un script bash?if [ $(docker inspect -f '{{.State.Running}}' $container_name) = "true" ]; then echo yup; else echo nope; fi
docker inspect -f '{{.State.Restarting}}' $container_name
depuis que je démarre mon conteneur avec une politique de redémarrage, bien qu'ici "vrai" soit ce que vous voulez éviter.if
instruction 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
J'ai fini par utiliser
pour vérifier avec un script bash si le moteur docker est en cours d'exécution.
la source
docker info > /dev/null 2>&1
si vous n'avez pas besoin de la sortievous pouvez vérifier l'état du docker en utilisant:
systemctl is-active docker
vous pouvez l'utiliser comme:
la source
docker ps --filter name=pattern
, alors vous pouvez formater la sortie pour vérifier uniquement l'état en ajoutant ce drapeau:--format {{.Status}}
Lister tous les conteneurs:
docker container ls -a
ls
= liste-a
= toutVérifiez la colonne "état"
la source
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
la source
if [[ $? -ne 0 ]]
antiToute commande docker (sauf
docker -v
), commedocker 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.
la source
Parfois, vous ne connaissez pas le nom complet du conteneur, dans ce cas, c'est ce qui a fonctionné pour moi:
Nous listons tous les processus de conteneur en cours d'exécution (
docker ps -a
nous 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 (grep
partie) et échouons simplement si nous ne trouvons pas au moins un conteneur en cours d'exécution dont le nom contient notre mot-clé.la source
Vous pouvez vérifier avec cette commande
systemctl status docker
qu'il affichera l'état du docker. Si vous voulez commencer, vous pouvez utiliser à lasystemctl start docker
place desystemctl
vous pouvez également essayer avecservice
,service docker status
etservice docker start
respectivement.la source
systemd
comme init.systemctl status docker
correctement montrer si le service docker est en cours d'exécution. Je vous remercie.Vous pouvez également vérifier si un conteneur Docker particulier est en cours d'exécution ou non à l'aide de la commande suivante:
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.
la source
Courir:
Si docker est en cours d' exécution, vous verrez:
Si le docker n'est pas en cours d' exécution, vous verrez:
la source
Si l'objectif sous-jacent est "Comment puis-je démarrer un conteneur au démarrage de Docker?"
Nous pouvons utiliser la politique de redémarrage de Docker
Pour ajouter une stratégie de redémarrage à un conteneur existant:
Docker: ajouter une stratégie de redémarrage à un conteneur déjà créé
Exemple:
la source
sur un Mac, vous pouvez voir l'image:
si vous cliquez avec le bouton droit sur l'icône du menu fixe, vous voyez:
alternativement:
docker ps
et
docker run hello-world
la source
Comment j'enregistre SSH.Run:
Si réponse: Impossible d'obtenir la connexion D-Bus: opération non autorisée
C'est un docker ou un conteneur WSL.
la source
docker ps -a
Vous pouvez voir tous les conteneurs Docker, qu'ils soient vivants ou morts.
la source