Cómo usar el comando docker desktop restart para reiniciar Docker Desktop

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo reiniciar Docker Desktop, una operación fundamental para gestionar tu entorno Docker. Exploraremos el propósito detrás de reiniciar Docker Desktop, que equivale a reiniciar el servicio del demonio Docker en un entorno Linux como el proporcionado en esta máquina virtual de LabEx.

Ejecutarás el comando básico de reinicio, aprenderás cómo reiniciar Docker Desktop en modo desatendido (detached mode) y comprenderás cómo establecer un tiempo de espera (timeout) para el proceso de reinicio. Esta experiencia práctica te proporcionará el conocimiento necesario para gestionar y solucionar problemas de tu configuración Docker reiniciando el demonio cuando sea necesario.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/restart("Restart Container") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/ps -.-> lab-555147{{"Cómo usar el comando docker desktop restart para reiniciar Docker Desktop"}} docker/start -.-> lab-555147{{"Cómo usar el comando docker desktop restart para reiniciar Docker Desktop"}} docker/stop -.-> lab-555147{{"Cómo usar el comando docker desktop restart para reiniciar Docker Desktop"}} docker/restart -.-> lab-555147{{"Cómo usar el comando docker desktop restart para reiniciar Docker Desktop"}} docker/info -.-> lab-555147{{"Cómo usar el comando docker desktop restart para reiniciar Docker Desktop"}} docker/system -.-> lab-555147{{"Cómo usar el comando docker desktop restart para reiniciar Docker Desktop"}} end

Comprender el propósito del reinicio de Docker Desktop

En este paso, entenderemos el propósito de reiniciar Docker Desktop. Aunque el entorno de LabEx proporciona una máquina virtual Linux con Docker preinstalado, el concepto de reiniciar el demonio Docker es fundamental para gestionar entornos Docker, incluido Docker Desktop en otros sistemas operativos.

El demonio Docker es el servicio en segundo plano que gestiona objetos Docker como imágenes, contenedores, redes y volúmenes. En ocasiones, puede ser necesario reiniciar el demonio Docker por diversas razones, como:

  • Aplicar cambios de configuración: Algunos cambios en la configuración del demonio Docker requieren un reinicio para surtir efecto.
  • Solucionar problemas: Reiniciar el demonio puede resolver diversos problemas, como contenedores que no inician, problemas de red o fallos de rendimiento.
  • Liberar recursos: En algunos casos, reiniciar el demonio puede ayudar a liberar recursos del sistema que podrían estar siendo consumidos por el proceso Docker.

En un entorno Linux como la máquina virtual de LabEx, interactúas directamente con el demonio Docker a través de la interfaz de línea de comandos docker. El equivalente a reiniciar Docker Desktop en otros sistemas operativos es reiniciar el servicio del demonio Docker en Linux.

Para verificar el estado del servicio Docker en la máquina virtual de LabEx, puedes usar el comando systemctl:

systemctl status docker

Deberías ver una salida que indique que el servicio Docker está activo y en ejecución.

● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: https://docs.docker.com
   Main PID: ... (dockerd)
      Tasks: ...
     Memory: ...
        CPU: ...
     CGroup: /system.slice/docker.service
             └─... /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Esta salida confirma que el demonio Docker se está ejecutando como un servicio del sistema. Aunque no reiniciaremos el servicio en este paso específico para evitar interrumpir el entorno, comprender su estado es el primer paso para gestionarlo.

Ejecutar el comando básico de reinicio de Docker Desktop

En este paso, aprenderemos cómo reiniciar el demonio Docker en un entorno Linux, lo cual es análogo a reiniciar Docker Desktop. Como vimos en el paso anterior, el demonio Docker es un servicio del sistema. Para reiniciar un servicio del sistema en Linux, usamos el comando systemctl.

El comando básico para reiniciar el servicio Docker es sudo systemctl restart docker. Se utiliza sudo porque reiniciar servicios del sistema normalmente requiere privilegios administrativos. El comando systemctl restart detiene el servicio si está en ejecución y luego lo inicia nuevamente.

Antes de reiniciar, ejecutemos un comando simple de Docker para verificar que el demonio responda. Podemos listar los contenedores en ejecución usando docker ps. Como aún no hemos iniciado ningún contenedor, la salida debería estar vacía o mostrar solo los encabezados de las columnas.

docker ps

Ahora, reiniciemos el servicio Docker. Ejecuta el siguiente comando:

sudo systemctl restart docker

Este comando detendrá y luego iniciará el demonio Docker. No verás mucha salida a menos que ocurra un error.

Una vez completado el reinicio, verifiquemos nuevamente el estado del servicio Docker para confirmar que está en ejecución:

systemctl status docker

Deberías ver una salida similar al paso anterior, indicando que el servicio está activo y en ejecución, pero la línea "Active" mostrará una marca de tiempo reciente, indicando que ha sido reiniciado.

Finalmente, ejecutemos docker ps nuevamente para confirmar que el demonio Docker responde después del reinicio:

docker ps

La salida debería mostrar nuevamente los encabezados de los contenedores, confirmando que el demonio Docker está operativo.

Reiniciar el demonio Docker es un paso común para solucionar problemas y es necesario después de realizar ciertos cambios de configuración.

Reiniciar Docker Desktop en modo desacoplado (detached mode)

En este paso, exploraremos el concepto de ejecutar procesos en "modo desacoplado" y cómo se relaciona con la gestión del demonio Docker. Aunque el término "modo desacoplado" se asocia más comúnmente con la ejecución de contenedores Docker en segundo plano, el principio subyacente de ejecutar un proceso sin mantener el terminal conectado es relevante para servicios del sistema como el demonio Docker.

Cuando ejecutas un comando en primer plano, tu terminal permanece ocupada hasta que el comando finaliza. En contraste, ejecutar un proceso en segundo plano o "desacoplado" te permite continuar usando tu terminal para otras tareas. Servicios del sistema como el demonio Docker están diseñados para ejecutarse automáticamente en segundo plano cuando el sistema inicia.

En el contexto de systemctl, el comando restart por defecto se ejecuta de manera que no mantiene tu terminal conectada. Inicia el proceso de detención e inicio y devuelve el control a tu terminal una vez ejecutado el comando, incluso si el servicio todavía está completando su inicio. Esto es similar al concepto de modo desacoplado para contenedores.

Para ilustrar esto, reiniciemos el servicio Docker nuevamente usando el mismo comando que antes:

sudo systemctl restart docker

Observa que después de ejecutar el comando, el prompt de tu terminal regresa inmediatamente. El comando systemctl restart en sí no espera a que el demonio Docker esté completamente operativo antes de retornar. El demonio ahora se está reiniciando en segundo plano.

Puedes verificar que el servicio se está reiniciando y eventualmente ejecutando en segundo plano revisando su estado:

systemctl status docker

Verás que el estado cambia de "stopping" (deteniéndose) a "starting" (iniciándose) y finalmente a "active (running)" (activo/en ejecución). Esto ocurre independientemente de tu sesión de terminal después de iniciar el comando de reinicio.

Este comportamiento de systemctl restart es análogo a ejecutar un contenedor Docker con el flag -d o --detach, donde el contenedor inicia en segundo plano y no bloquea tu terminal.

Reiniciar Docker Desktop con un tiempo de espera (timeout)

En este paso, aprenderemos cómo reiniciar el demonio Docker con un tiempo de espera. Aunque el comando systemctl restart en sí no tiene un parámetro incorporado de tiempo de espera como algunos comandos de Docker (por ejemplo docker stop --time), el concepto de tiempo de espera es importante al gestionar servicios.

En el contexto de systemctl, las operaciones de detención e inicio que ocurren durante un reinicio tienen sus propios tiempos de espera internos definidos en el archivo de unidad del servicio. Si un servicio falla al detenerse o iniciarse dentro de estos tiempos de espera definidos, systemd (el administrador del sistema y servicios) normalmente reportará un error.

Por ejemplo, si el demonio Docker está ocupado y tarda demasiado en apagarse cuando se ejecuta systemctl restart, systemd podría eventualmente terminar el proceso y reportar un fallo. De manera similar, si el demonio falla al iniciarse dentro de su tiempo de espera configurado, la operación de inicio fallará.

Aunque no podemos especificar directamente un tiempo de espera en el comando systemctl restart para todo el proceso de reinicio, podemos simular un escenario donde un tiempo de espera podría ser relevante observando el comportamiento del estado del servicio durante un reinicio.

Iniciemos otro reinicio del servicio Docker:

sudo systemctl restart docker

Inmediatamente después de ejecutar el comando, puedes verificar rápidamente el estado. Podrías ver brevemente el servicio en un estado "stopping" (deteniéndose) o "activating" (activándose) antes de que regrese a "active (running)" (activo/en ejecución).

systemctl status docker

El tiempo que tarda el servicio en pasar por estos estados está influenciado por los tiempos de espera internos configurados para la unidad de servicio de Docker. Si el servicio se quedara bloqueado durante la detención o el inicio, systemd aplicaría esos tiempos de espera.

Por ejemplo, si la operación de detención excediera el tiempo de espera, podrías ver un mensaje de error en la salida de systemctl status docker o en los registros del sistema (journalctl -u docker).

Aunque no tenemos una opción directa en la línea de comandos para establecer un tiempo de espera para toda la operación systemctl restart, entender que los procesos subyacentes de detención e inicio están sujetos a tiempos de espera es crucial para solucionar problemas de gestión de servicios. Si un reinicio falla consistentemente, investigar los registros del servicio en busca de errores de tiempo de espera es un buen punto de partida.

Resumen

En este laboratorio, aprendimos el propósito de reiniciar Docker Desktop, que es análogo a reiniciar el servicio del demonio Docker en un entorno Linux. Comprendimos que el reinicio es necesario para aplicar cambios de configuración, solucionar problemas y liberar recursos. También aprendimos cómo verificar el estado del servicio Docker usando el comando systemctl status docker en una máquina virtual Linux.

Posteriormente, procedimos a ejecutar el comando básico docker desktop restart, aunque el entorno del laboratorio utiliza una máquina virtual Linux donde interactuamos directamente con el demonio Docker. También exploramos cómo reiniciar Docker Desktop en modo desacoplado (detached mode) y con un tiempo de espera (timeout) específico, comprendiendo las implicaciones prácticas de estas opciones para gestionar eficazmente el entorno Docker.