Cómo usar el comando docker desktop start para iniciar 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, exploraremos cómo utilizar el comando docker start para gestionar el ciclo de vida de los contenedores de Docker. Comenzaremos comprendiendo el propósito fundamental de docker start y cómo difiere de docker run.

A través de ejercicios prácticos, aprenderás a iniciar contenedores detenidos de forma síncrona, iniciar contenedores en modo desacoplado (detached) y especificar un tiempo de espera (timeout) para la operación de inicio. Al finalizar este laboratorio, serás competente en el uso de docker start para reanudar tus contenedores de Docker de manera eficiente.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555148{{"Cómo usar el comando docker desktop start para iniciar Docker Desktop"}} docker/ps -.-> lab-555148{{"Cómo usar el comando docker desktop start para iniciar Docker Desktop"}} docker/start -.-> lab-555148{{"Cómo usar el comando docker desktop start para iniciar Docker Desktop"}} docker/stop -.-> lab-555148{{"Cómo usar el comando docker desktop start para iniciar Docker Desktop"}} docker/create -.-> lab-555148{{"Cómo usar el comando docker desktop start para iniciar Docker Desktop"}} docker/pull -.-> lab-555148{{"Cómo usar el comando docker desktop start para iniciar Docker Desktop"}} end

Comprender el propósito de docker start

En este paso, entenderemos el propósito del comando docker start. El comando docker start se utiliza para iniciar uno o más contenedores detenidos. Cuando detienes un contenedor usando docker stop, su estado se guarda y puedes reanudarlo más tarde usando docker start. Esto es diferente de docker run, que crea un nuevo contenedor a partir de una imagen y luego lo inicia.

Primero, creemos un contenedor simple que podamos detener y luego iniciar. Usaremos la imagen ubuntu y ejecutaremos un comando que mantenga el contenedor en ejecución por un breve período.

docker run -d --name my-ubuntu ubuntu sleep 60

Este comando ejecuta un contenedor Ubuntu en modo desacoplado (-d), lo nombra my-ubuntu y ejecuta el comando sleep 60 dentro del contenedor. El comando sleep 60 mantendrá el contenedor en ejecución durante 60 segundos.

Ahora, verifiquemos el estado del contenedor usando docker ps.

docker ps

Deberías ver el contenedor my-ubuntu listado con un estado de Up.

A continuación, detendremos el contenedor usando el comando docker stop.

docker stop my-ubuntu

Este comando envía una señal de detención al contenedor my-ubuntu.

Ahora, verifiquemos nuevamente el estado del contenedor usando docker ps.

docker ps

Deberías ver que el contenedor my-ubuntu ya no aparece en la salida de docker ps (que muestra solo contenedores en ejecución). Para ver todos los contenedores, incluidos los detenidos, puedes usar docker ps -a.

docker ps -a

Ahora deberías ver my-ubuntu listado con un estado de Exited. Esto confirma que el contenedor ha sido detenido.

Finalmente, usaremos el comando docker start para iniciar el contenedor detenido.

docker start my-ubuntu

Este comando inicia el contenedor my-ubuntu.

Verifiquemos el estado del contenedor una última vez usando docker ps.

docker ps

Deberías ver el contenedor my-ubuntu listado nuevamente con un estado de Up. Esto demuestra que docker start reanudó exitosamente el contenedor previamente detenido.

En resumen, docker start se usa para reanudar un contenedor detenido, preservando su estado, mientras que docker run crea e inicia un nuevo contenedor.

Iniciar Docker Desktop de forma síncrona

En este paso, exploraremos cómo iniciar un contenedor Docker de forma síncrona. Cuando inicias un contenedor sincrónicamente, el comando espera a que el contenedor finalice su ejecución antes de devolver el control a tu terminal. Este es el comportamiento predeterminado cuando ejecutas un comando directamente en un contenedor sin la bandera -d (detached).

Utilicemos un contenedor simple de ubuntu para demostrar la ejecución síncrona. Ejecutaremos un comando que imprime un mensaje y luego finaliza.

Primero, asegúrate de que la imagen ubuntu esté disponible. Si no lo está, descárgala:

docker pull ubuntu

Ahora, ejecuta un contenedor sincrónicamente que imprima "Hello from Ubuntu" y luego finalice.

docker run --rm ubuntu echo "Hello from Ubuntu"

Analicemos este comando:

  • docker run: Este es el comando para crear y ejecutar un nuevo contenedor.
  • --rm: Esta bandera elimina automáticamente el contenedor cuando finaliza. Es útil para contenedores temporales como este.
  • ubuntu: Este es el nombre de la imagen a utilizar.
  • echo "Hello from Ubuntu": Este es el comando que se ejecutará dentro del contenedor.

Cuando ejecutes este comando, verás la salida "Hello from Ubuntu" directamente en tu terminal. El prompt no regresará hasta que el comando echo dentro del contenedor haya finalizado y el contenedor haya terminado. Esto es ejecución síncrona.

Compara esto con el modo detached que vimos en el paso anterior, donde el comando regresaba inmediatamente y el contenedor se ejecutaba en segundo plano.

Para ilustrar mejor el comportamiento síncrono, ejecutemos un comando que tome un poco más de tiempo.

docker run --rm ubuntu sleep 5

Este comando ejecutará un contenedor Ubuntu y ejecutará el comando sleep 5, que pausa la ejecución durante 5 segundos. Notarás que tu terminal estará bloqueada durante 5 segundos antes de que el comando se complete y regrese el prompt. Esto ocurre porque el comando docker run está esperando a que el comando sleep 5 dentro del contenedor finalice.

Este modo síncrono es útil cuando necesitas ejecutar un comando en un contenedor y esperar su salida o finalización antes de continuar con otras acciones en tu script o flujo de trabajo.

Iniciar Docker Desktop en modo detached

En este paso, aprenderemos cómo iniciar un contenedor Docker en modo detached (desacoplado). El modo detached significa que el contenedor se ejecuta en segundo plano y el comando de Docker devuelve inmediatamente el control a tu terminal. Esto es útil para servicios de larga duración o aplicaciones con las que no necesitas interactuar directamente en la terminal.

Para iniciar un contenedor en modo detached, se utiliza la bandera -d o --detach con los comandos docker run o docker start.

Iniciemos un contenedor simple del servidor web Nginx en modo detached. Primero, descarga la imagen nginx si no la tienes localmente.

docker pull nginx

Ahora, ejecuta el contenedor Nginx en modo detached y mapea el puerto 80 del contenedor al puerto 8080 en tu máquina host.

docker run -d --name my-nginx -p 8080:80 nginx

Analicemos este comando:

  • docker run: Crea y ejecuta un nuevo contenedor.
  • -d: Ejecuta el contenedor en modo detached (en segundo plano).
  • --name my-nginx: Asigna al contenedor el nombre my-nginx.
  • -p 8080:80: Mapea el puerto 80 dentro del contenedor al puerto 8080 en tu host. Esto permite acceder al servidor web Nginx desde el navegador de tu máquina host en http://localhost:8080.
  • nginx: Nombre de la imagen a utilizar.

Después de ejecutar este comando, verás una larga cadena de caracteres impresa en tu terminal. Este es el ID del contenedor. El prompt regresará inmediatamente, indicando que el contenedor se está ejecutando en segundo plano.

Para verificar que el contenedor está en ejecución, usa el comando docker ps.

docker ps

Deberías ver el contenedor my-nginx listado con un estado de Up.

También puedes probar accediendo al servidor web Nginx desde tu máquina host usando curl.

curl http://localhost:8080

Deberías ver el contenido HTML de la página de bienvenida predeterminada de Nginx en tu terminal. Esto confirma que el contenedor está en ejecución y accesible a través del puerto mapeado.

Para detener el contenedor en modo detached, puedes usar el comando docker stop con el nombre o ID del contenedor.

docker stop my-nginx

Después de detener el contenedor, verifica que ya no está en ejecución usando docker ps.

docker ps

El contenedor my-nginx no debería aparecer en la salida.

Iniciar contenedores en modo detached es esencial para ejecutar servicios y aplicaciones que necesitan operar continuamente sin bloquear tu terminal.

Iniciar Docker Desktop con timeout

En este paso, aprenderemos cómo iniciar un contenedor Docker con un tiempo de espera (timeout). El comando docker start tiene una bandera --attach que permite conectarse a STDOUT/STDERR del contenedor y reenviar señales. Cuando se usa con --attach, también puedes especificar una bandera --timeout para establecer un tiempo máximo de espera antes de que el contenedor se detenga después de que el cliente se desconecte. Esto es particularmente útil para garantizar que un contenedor no continúe ejecutándose indefinidamente si el cliente que lo inició termina.

Primero, creemos un contenedor que podamos iniciar con timeout. Usaremos la imagen ubuntu y ejecutaremos un comando que mantenga el contenedor en ejecución.

docker create --name my-timeout-ubuntu ubuntu sleep 60

Este comando crea un contenedor llamado my-timeout-ubuntu a partir de la imagen ubuntu y establece el comando como sleep 60. Nota que usamos docker create aquí, que crea el contenedor pero no lo inicia.

Ahora, iniciaremos este contenedor usando docker start con las banderas --attach y --timeout. Estableceremos el timeout en 5 segundos.

docker start --attach --timeout 5 my-timeout-ubuntu

Analicemos este comando:

  • docker start: Inicia un contenedor detenido.
  • --attach: Se conecta a STDOUT/STDERR del contenedor y reenvía señales.
  • --timeout 5: Establece un timeout de 5 segundos. Si el cliente (en este caso tu terminal) se desconecta, Docker esperará 5 segundos para que el contenedor se detenga correctamente. Si no se detiene en 5 segundos, Docker enviará una señal SIGKILL para forzar su detención.
  • my-timeout-ubuntu: Nombre del contenedor a iniciar.

Al ejecutar este comando, estarás conectado a la salida del contenedor. Como el contenedor solo ejecuta sleep 60, no verás salida inmediatamente.

Ahora, simulemos una desconexión del cliente. Puedes hacer esto presionando Ctrl+C en tu terminal. Esto te desconectará del contenedor.

Después de presionar Ctrl+C, Docker iniciará el proceso de timeout. Esperará 5 segundos para que el contenedor my-timeout-ubuntu se detenga. Como el contenedor está ejecutando sleep 60, no se detendrá en 5 segundos y Docker lo forzará a detenerse.

Para verificar que el contenedor se ha detenido, usa docker ps -a.

docker ps -a

Deberías ver my-timeout-ubuntu listado con un estado de Exited. Esto confirma que el mecanismo de timeout funcionó y el contenedor se detuvo después de que el cliente se desconectó.

Usar la bandera --timeout con docker start --attach es una buena práctica para gestionar el ciclo de vida de contenedores iniciados con una conexión de cliente, asegurando que se limpien adecuadamente incluso si el cliente termina inesperadamente.

Resumen

En este laboratorio, aprendimos el propósito fundamental del comando docker start, que es reanudar un contenedor detenido preservando su estado. Lo diferenciamos de docker run, que crea e inicia un nuevo contenedor. A través de pasos prácticos, demostramos cómo:

  1. Crear un contenedor
  2. Detenerlo usando docker stop
  3. Verificar su estado detenido con docker ps -a
  4. Reiniciarlo usando docker start
  5. Confirmar su estado de ejecución con docker ps

También exploramos diferentes formas de iniciar Docker Desktop usando el comando docker desktop start, incluyendo:

  • Inicio síncrono
  • Modo detached (en segundo plano)
  • Con un timeout específico

Estas opciones brindan flexibilidad para controlar el comportamiento de inicio de Docker Desktop según necesidades específicas y flujos de trabajo.