Cómo usar el comando docker compose unpause para reanudar servicios

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 a utilizar el comando docker compose unpause para reanudar servicios pausados. Comenzaremos creando un archivo docker-compose.yml simple para definir un servicio web básico utilizando la imagen de Nginx.

Después de la configuración, iniciarás los servicios con docker compose up, luego los pausarás usando docker compose pause. Finalmente, utilizarás docker compose unpause para reanudar los servicios y verificar que se estén ejecutando correctamente. Este ejercicio práctico demostrará la aplicación real de pausar y reanudar servicios en Docker Compose.


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/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/run -.-> lab-555095{{"Cómo usar el comando docker compose unpause para reanudar servicios"}} docker/ps -.-> lab-555095{{"Cómo usar el comando docker compose unpause para reanudar servicios"}} docker/pull -.-> lab-555095{{"Cómo usar el comando docker compose unpause para reanudar servicios"}} end

Crear un archivo docker-compose.yml simple

En este paso, crearemos un archivo básico docker-compose.yml. Este archivo es el núcleo de Docker Compose, ya que define los servicios, redes y volúmenes para tu aplicación. Antes de comenzar, necesitamos instalar Docker Compose, ya que no viene preinstalado en este entorno.

Primero, instalemos Docker Compose. Descargaremos la última versión estable y la haremos ejecutable.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Ahora, verifiquemos la instalación comprobando la versión.

docker-compose --version

Deberías ver la información de la versión impresa en la consola, lo que confirma que Docker Compose está instalado correctamente.

A continuación, navega al directorio ~/project, que es tu directorio de trabajo para este laboratorio.

cd ~/project

Ahora, crearemos un archivo llamado docker-compose.yml en este directorio. Este archivo definirá un servicio simple utilizando la imagen nginx. Usaremos el editor nano para crear y editar el archivo.

nano docker-compose.yml

Dentro del editor nano, pega el siguiente contenido:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Analicemos este archivo docker-compose.yml:

  • version: '3.8' especifica la versión del formato del archivo Docker Compose.
  • services: define los diferentes servicios que componen tu aplicación.
  • web: es el nombre de nuestro servicio. Puedes nombrar tus servicios como prefieras.
  • image: nginx:latest especifica la imagen de Docker a utilizar para este servicio. En este caso, estamos usando la última versión de la imagen oficial de Nginx. Como esta imagen podría no estar presente localmente, Docker Compose la descargará automáticamente de Docker Hub cuando inicies el servicio.
  • ports: mapea puertos entre la máquina host y el contenedor. "80:80" mapea el puerto 80 en el host al puerto 80 en el contenedor. Esto significa que podrás acceder al servidor web Nginx que se ejecuta dentro del contenedor visitando http://localhost (o la dirección IP de la VM) en tu máquina host.

Después de pegar el contenido, guarda el archivo presionando Ctrl + O, luego presiona Enter para confirmar el nombre del archivo, y finalmente presiona Ctrl + X para salir del editor nano.

Ahora has creado exitosamente tu primer archivo docker-compose.yml. En el siguiente paso, usaremos este archivo para iniciar el servicio Nginx.

Iniciar servicios usando docker compose up

En este paso, utilizaremos el comando docker-compose up para iniciar los servicios definidos en nuestro archivo docker-compose.yml. Este comando construye, (re)crea, inicia y se conecta a los contenedores de un servicio.

Asegúrate de estar en el directorio ~/project donde creaste el archivo docker-compose.yml en el paso anterior.

cd ~/project

Ahora, ejecuta el siguiente comando para iniciar el servicio Nginx:

docker-compose up -d

Entendamos el comando:

  • docker-compose up inicia los servicios definidos en el archivo docker-compose.yml
  • -d ejecuta los contenedores en modo detached (desconectado), lo que significa que se ejecutarán en segundo plano sin bloquear tu terminal

Cuando ejecutes este comando por primera vez, Docker Compose descargará la imagen nginx:latest de Docker Hub si no está presente en tu sistema. Verás una salida que indica la descarga de la imagen y la creación e inicio del contenedor.

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

docker ps

Deberías ver una entrada para el servicio web (o un nombre similar basado en tu directorio y nombre de servicio) con el estado Up. Esto indica que el contenedor Nginx está en ejecución.

También puedes verificar que el servidor web Nginx es accesible usando curl para acceder al puerto expuesto 80.

curl http://localhost:80

Deberías ver el HTML de la página de bienvenida predeterminada de Nginx en tu terminal. Esto confirma que el servidor Nginx se está ejecutando dentro del contenedor y es accesible desde tu máquina host a través del puerto mapeado.

Pausar servicios usando docker compose pause

En este paso, aprenderemos cómo pausar los servicios en ejecución usando el comando docker-compose pause. Pausar un contenedor suspende temporalmente todos sus procesos. Esto es diferente a detener un contenedor, lo cual termina los procesos.

Asegúrate de estar en el directorio ~/project donde se encuentra tu archivo docker-compose.yml y tus servicios están en ejecución.

cd ~/project

Ahora, ejecuta el siguiente comando para pausar el servicio web:

docker-compose pause web

Deberías ver una salida que indica que el servicio web está siendo pausado.

Para verificar que el contenedor está pausado, puedes usar el comando docker ps.

docker ps

Observa la columna STATUS para el contenedor del servicio web. Ahora debería mostrar un estado como Up ... (Paused). Esto confirma que los procesos del contenedor están suspendidos.

Mientras el contenedor está pausado, el servidor web Nginx dentro de él no procesa activamente las solicitudes. Si intentas acceder usando curl, la solicitud probablemente se quedará colgada o fallará por tiempo de espera porque el servidor no responde.

curl http://localhost:80

Este comando no devolverá inmediatamente la página de bienvenida de Nginx como lo hacía cuando el contenedor estaba en ejecución. Puede que necesites presionar Ctrl + C para interrumpir el comando después de un tiempo.

Pausar es útil cuando necesitas detener temporalmente un servicio sin perder su estado actual.

Reanudar servicios usando docker compose unpause

En este paso, reanudaremos la ejecución del servicio pausado usando el comando docker-compose unpause. Este comando reanuda los contenedores que han sido pausados.

Asegúrate de estar en el directorio ~/project donde se encuentra tu archivo docker-compose.yml.

cd ~/project

Ahora, ejecuta el siguiente comando para reanudar el servicio web:

docker-compose unpause web

Deberías ver una salida que indica que el servicio web está siendo reanudado.

Para verificar que el contenedor ya no está pausado y está funcionando normalmente, puedes usar nuevamente el comando docker ps.

docker ps

Observa la columna STATUS para el contenedor del servicio web. Ahora debería mostrar un estado como Up ... sin el indicador (Paused). Esto significa que los procesos del contenedor se han reanudado.

Después de reanudar, el servidor web Nginx dentro del contenedor debería estar procesando solicitudes activamente nuevamente. Puedes confirmar esto usando curl para acceder al puerto expuesto 80.

curl http://localhost:80

Esta vez, deberías recibir inmediatamente el HTML de la página de bienvenida predeterminada de Nginx, igual que cuando iniciaste el contenedor por primera vez. Esto confirma que el servicio está completamente operativo nuevamente.

Reanudar es la contraparte de pausar, permitiéndote continuar rápidamente un servicio desde su estado suspendido.

Verificar que los servicios están en ejecución después de reanudar

En este paso, realizaremos una verificación final para asegurarnos de que el servicio Nginx esté completamente operativo después de ser reanudado. Aunque verificamos el estado del contenedor en el paso anterior, es una buena práctica confirmar que la aplicación dentro del contenedor también responde como se espera.

Asegúrate de estar en el directorio ~/project.

cd ~/project

Usaremos nuevamente el comando curl para acceder al servidor web Nginx que se ejecuta en el puerto 80.

curl http://localhost:80

Deberías ver el contenido HTML de la página de bienvenida predeterminada de Nginx impreso en tu terminal. Esto confirma que el proceso Nginx dentro del contenedor está en ejecución y sirviendo contenido.

Este paso refuerza la comprensión de que reanudar un contenedor permite que la aplicación dentro de él retome sus operaciones normales.

Finalmente, para limpiar el contenedor en ejecución y la red creada por Docker Compose, puedes usar el comando docker-compose down. Este comando detiene y elimina contenedores, redes y volúmenes creados por up.

docker-compose down

Verás una salida que indica que el servicio y la red están siendo detenidos y eliminados.

Para confirmar que el contenedor ya no está en ejecución, puedes usar docker ps.

docker ps

La salida no debería mostrar contenedores en ejecución, lo que indica que el servicio Nginx se ha detenido y eliminado correctamente.

Resumen

En este laboratorio, aprendimos a utilizar Docker Compose para gestionar el ciclo de vida de los servicios. Comenzamos instalando Docker Compose y creando un archivo docker-compose.yml para definir un servicio simple de Nginx.

Luego utilizamos docker compose up para iniciar el servicio definido, docker compose pause para suspender temporalmente los procesos del servicio, y finalmente docker compose unpause para reanudar el servicio pausado. Verificamos el estado del servicio después de cada paso, demostrando la aplicación práctica de estos comandos de Docker Compose para controlar la ejecución de servicios.