¿Cómo comprobar si el motor de la ventana acoplable y un contenedor de la ventana acoplable se están ejecutando?

103

En un guión, necesito verificar:

a) ¿Está funcionando el motor de la ventana acoplable?
b) Dado un nombre de contenedor, ¿se está ejecutando ese contenedor de Docker?

[la redacción inicial de esta pregunta era ambigua, y algunas personas la interpretaban como "comprobar el motor de la ventana acoplable" y otras como "comprobar el contenedor de la ventana acoplable"]

usuario5517392
fuente
4
Cualquier comando de docker (excepto docker -v), como docker ps
Glen Pierce
docker attach containerName
Mattia Dinosaur
1
o prueba docker ps
Mattia Dinosaur
2
sudo systemctl status docker
Duk
docker ps----- Este comando solo mostrará contenedores
EN

Respuestas:

109

Si está buscando un contenedor específico, puede ejecutar:

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

Para evitar problemas con un contenedor que se encuentra en un bucle de bloqueo y que se reinicia constantemente para que no muestre que está activo, lo anterior se puede mejorar marcando el Statuscampo:

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

Si desea saber si dockerd se está ejecutando solo en la máquina local y tiene systemd instalado, puede ejecutar:

systemctl show --property ActiveState docker

También puede conectarse a la ventana acoplable con docker infoo docker versiony se producirán un error si el demonio no está disponible.

BMitch
fuente
¿Cómo pondrías el docker inspect …interior de una ifdeclaración de 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
Utilizo docker inspect -f '{{.State.Restarting}}' $container_namedesde que inicio mi contenedor con una política de reinicio, aunque aquí "verdadero" es lo que desea evitar.
Stav Meir
4
Tanto bash como docker se quejarán de la ifdeclaración anterior , cuando el contenedor no se esté ejecutando. Esto esconde el vómito no deseado por el caso falso: if [ "$(docker inspect -f '{{.State.Running}}' ${container_name} 2>/dev/null)" = "true" ]; then echo yup; else echo nope; fi
Trevor
1
@MarcoLackovic suena como si te perdieras la parte anterior "has instalado systemd".
BMitch
48

Terminé usando

docker info

para verificar con un script bash si el motor de Docker se está ejecutando.

control aleatorio
fuente
6
Esta respuesta está subestimada. Es multiplataforma y pasa / falla rápidamente.
Andy Fleming
2
docker info > /dev/null 2>&1si no necesita la salida
buggymcbugfix
22

puede verificar el estado de la ventana acoplable usando: systemctl is-active docker

➜  ~  systemctl is-active docker
active

puedes usarlo como:

➜  ~  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
fuente
Esto no responde a la pregunta. "para verificar con el nombre del contenedor"
jens.klose
sí, parece que la pregunta es ambigua, para verificar si el contenedor se está ejecutando, debe usarlo docker ps --filter name=pattern, luego puede formatear la salida para verificar solo el estado agregando esta bandera:--format {{.Status}}
Hernán García
16

Enumere todos los contenedores:

docker container ls -a

ls= lista
-a= todo

Verifique la columna "estado"

Senio Caires
fuente
1
¡Eso es lo que necesitaba, porque funciona en todas las plataformas!
Rolljee
fácil y simple ... TRABAJADO.
RMati
15

Para usuarios de OS X (Mojave 10.14.3)

Esto es lo que uso en mi script Bash para probar si Docker se está ejecutando o no

# 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
fuente
1
Refactoré esto para eliminar el if [[ $? -ne 0 ]]antipatrón.
tripleee
10

Cualquier comando de la ventana acoplable (excepto docker -v), como docker ps Si Docker se está ejecutando, obtendrá una respuesta válida; de lo contrario, recibirá un mensaje que incluye "¿Está funcionando el demonio de la ventana acoplable?"

También puede consultar su administrador de tareas.

Glen Pierce
fuente
10

A veces no conoce el nombre completo del contenedor, en este caso esto es lo que funcionó para mí:

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

Enumeramos todos los procesos de contenedor en ejecución ( docker ps -atambién nos mostraría que no están en ejecución, pero eso no es lo que necesitaba), buscamos una palabra específica ( grepparte) y simplemente fallamos si no encontramos al menos un contenedor en ejecución cuyo nombre contenga nuestro palabra clave.

Emilia Tyl
fuente
Refactorizado para eliminar una colección masiva de antipatrones de programación
tripleee
5

Puede verificar con este comando systemctl status dockerque mostrará el estado de la ventana acoplable. Si desea iniciar se puede utilizar systemctl start dockeren lugar de systemctlusted puede probar también con service, service docker statusy service docker startrespectivamente.

Naanii
fuente
5
Esta respuesta asume que el usuario final está usando systemdcomo su inicio.
Rafael
systemctl status dockermostrar correctamente si el servicio Docker se está ejecutando. Gracias.
imsrgadich
4

También puede verificar si un contenedor Docker en particular se está ejecutando o no usando el siguiente comando:

docker inspect postgres | grep "Running"

Este comando verificará si, por ejemplo, mi contenedor de postgres se está ejecutando o no y devolverá la salida como "En ejecución": verdadero

Espero que esto ayude.

Rajusekhar Alle
fuente
Esto es exactamente lo que estaba buscando. Y funciona. (Es bueno cuando las personas que votan en contra dicen por qué, para que los novatos puedan aprender mejor la etiqueta SO. :))
allenjom
No voté en contra, pero "Error: No existe tal objeto: postgres"
ged
3

Correr:

docker version

Si Docker se está ejecutando , verá:

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

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

Si Docker no se está ejecutando , verá:

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

Error response from daemon: Bad response from Docker engine
Marco Lackovic
fuente
1

en una Mac, es posible que vea la imagen:

ingrese la descripción de la imagen aquí

si hace clic con el botón derecho en el icono de la ventana acoplable, verá:

ingrese la descripción de la imagen aquí

alternativamente:

docker ps

y

docker run hello-world

David Odhiambo
fuente
0

Cómo verifico SSH.Run:

systemctl

Si la respuesta: no se pudo obtener la conexión D-Bus: operación no permitida

Es un contenedor Docker o WSL.

Sachin Verma
fuente
0

docker ps -a

Puede ver todos los contenedores de la ventana acoplable, ya sea que estén vivos o muertos.

Ykimmy
fuente
0

Ejecute este comando en la terminal:

$docker ps

Si Docker no se está ejecutando, recibirá este mensaje:

Respuesta de error del demonio: marcar unix docker.raw.sock: conectar: ​​conexión rechazada

yasir hasan
fuente