Docker utiliza una arquitectura basada en daemon donde la CLI se conecta a un proceso de larga duración que se ejecuta por separado en su máquina o en un host remoto. Los comandos CLI no funcionarán y, por lo general, sus contenedores se desconectarán si el daemon se detiene.
Aquí se explica cómo verificar si el demonio de Docker está activo para que pueda diagnosticar problemas con los contenedores y el docker
dominio. Cuando el daemon no se está ejecutando, verá un mensaje de "no se puede conectar al daemon de Docker" cada vez que use docker
CLI.
Revisando con Systemctl
Puede verificar el estado de Docker con systemctl
en distribuciones que utilizan Systemd para la gestión de servicios. Esto cubre la mayoría de los sistemas operativos populares, incluidos Debian, Ubuntu, CentOS y Red Hat.
sudo systemctl status docker
Compruebe lo que se muestra en "Activo". Si ve active (running)
en verde, el demonio Docker se está ejecutando y sus contenedores deberían estar activos.
Un estado activo de inactive
indica que el servicio se ha detenido. Intente abrirlo ejecutando sudo systemctl start docker
. El estado debería cambiar a active (running)
después de que se inicie el demonio.
Si ve un estado de failed
en rojo, el demonio no pudo iniciarse debido a un error. Debe revisar los registros de inicio del servicio que se muestran más adelante en systemctl
salida de comando, ya que generalmente contienen sugerencias que le permiten averiguar qué salió mal.
Cuando no haya una resolución obvia disponible, inicie manualmente el daemon en modo de depuración para obtener más información sobre su rutina de inicio.
sudo dockerd --debug
Reiniciar su máquina host o reiniciar el servicio Docker con systemctl restart docker
también puede ayudar a aliviar problemas transitorios.
Inspección de detalles del proceso
Otra forma de verificar si hay un demonio Docker en ejecución es inspeccionar su archivo de ID de proceso. El daemon escribe su ID de proceso en /var/run/docker.pid
cada vez que se inicia. Cuando este archivo exista, Docker debería estar ejecutándose y listo para conexiones CLI.
cat /var/run/docker.pid
Puede usar esta técnica para crear scripts programáticos que verifiquen si el daemon está vivo. Leer el archivo te da la ID que puedes usar con herramientas como top
para obtener más información sobre el proceso de Docker:
cat /var/run/docker.pid # process id = 1000 top -p 1000
También puede obtener la identificación del proceso con el pidof
dominio. Esto acepta un nombre de proceso y devuelve el primer ID coincidente:
pidof dockerd # process id = 1000 # view information with top top -p `pidof dockerd`
Hay un demonio Docker activo en su máquina si top
coincide con un dockerd
proceso. Esto puede ser más confiable que buscar docker.pid
– si el demonio falla, docker.pid
podría quedarse atrás después de que el proceso haya terminado.
Manejo de archivos de proceso atascados
El demonio se negará a reiniciarse cuando haya un archivo PID presente. Esto podría dejarlo atascado en un bucle de reinicio si el archivo está realmente huérfano de una ejecución anterior. Verás este mensaje cuando ejecutes dockerd
:
failed to start daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid
Usa pidof dockerd
para asegurarse de que Docker realmente se detuvo. Continúe si el comando no emite ningún resultado, confirmando que no hay ningún proceso en ejecución.
Ejecute sudo rm /var/run/docker.pid
para eliminar el antiguo archivo de ID de proceso. El demonio ahora debería iniciarse correctamente la próxima vez que ejecute dockerd
o service docker start
.
Los problemas de archivos PID se encuentran comúnmente cuando toma una instantánea de una máquina virtual y luego crea una nueva instancia a partir de la imagen. El archivo de proceso se incluirá en la instantánea, lo que hará que el demonio de Docker en la nueva máquina virtual crea que ya se está ejecutando.
Comprobación de contenedores individuales
Se accede al estado de los contenedores individuales a través de docker ps
dominio. Esto emite una tabla que contiene los detalles de todos los contenedores que se están ejecutando actualmente.
docker ps
Combina el docker ps
comando con grep
para verificar fácilmente si un contenedor específico se está ejecutando por ID o nombre:
docker ps | grep my-container-name
Ahora la salida se filtrará para mostrar el contenedor que ha seleccionado. No habrá registros si el contenedor no se está ejecutando.
Los contenedores detenidos se muestran usando docker ps -a
. Un contenedor detenido se puede iniciar con docker start
comando:
docker start my-container
El contenedor luego se moverá al docker ps
normal producción. Puede detenerlo nuevamente con docker stop my-container
.
Conclusión
Tiene varias opciones para considerar cuando quiera saber si Docker se está ejecutando. Está el administrador de servicios de su sistema operativo, el docker.pid
archivo y herramientas regulares de inspección de procesos como top
y pidof
.
Cuando se trata de contenedores individuales, docker ps
proporciona la lista de todo lo que se está ejecutando actualmente en su host. Se puede obtener información más completa sobre el estado de cualquier contenedor con docker inspect container-name
que proporciona detalles de configuración de red, volúmenes y etiquetas en formato JSON.