Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Gestión de Aplicaciones Multicontenedor | Trabajando con Docker Compose
Conceptos Básicos de Docker

Gestión de Aplicaciones Multicontenedor

Desliza para mostrar el menú

Al crear aplicaciones modernas, a menudo es necesario ejecutar varios servicios juntos—como servidores web, bases de datos y sistemas de caché—que deben comunicarse y funcionar como un sistema unificado. Docker Compose simplifica este proceso permitiéndote definir todos tus servicios, sus dependencias y cómo interactúan, todo en un único archivo docker-compose.yml.

Definición de dependencias y enlaces de servicios en docker-compose.yml

En tu docker-compose.yml, cada servicio puede declarar dependencias y especificar cómo se conecta con otros. La clave depends_on permite definir el orden de inicio de los servicios, asegurando, por ejemplo, que una base de datos esté en funcionamiento antes de que tu aplicación intente conectarse. Además, Compose crea automáticamente una red predeterminada para tu proyecto, facilitando que los servicios se descubran y se comuniquen entre sí usando el nombre del servicio.

Supón que tienes una aplicación web que depende de una base de datos. En tu archivo Compose, define los servicios así:

version: "3.8"
services:
  app:
    build: .
    depends_on:
      - db
  db:
    image: postgres:15

Aquí:

  • El servicio app depende de db;
  • Compose iniciará el contenedor de la base de datos antes que la aplicación;
  • Ambos servicios pueden referirse entre sí usando los nombres de servicio como nombres de host dentro de la red de Compose.

Estrategias para escalar servicios y actualizar configuraciones

Docker Compose facilita el escalado horizontal de servicios. Si tu aplicación necesita manejar más tráfico, puedes aumentar el número de contenedores para un servicio usando la opción --scale al ejecutar docker compose up.

Para ejecutar tres instancias de tu servicio de aplicación, utiliza:

docker compose up --scale app=3
  • Este comando lanza tres contenedores para el servicio app;
  • Todos los contenedores están conectados a la misma red y pueden compartir recursos, como una base de datos;
  • Al escalar, asegúrate de que tus servicios sean sin estado o puedan manejar múltiples instancias correctamente.

Actualizar configuraciones en un entorno Compose es sencillo:

  • Modifica tu docker-compose.yml—por ejemplo, cambia variables de entorno, límites de recursos o imágenes de servicios;
  • Aplica los cambios con el siguiente comando:
docker compose up -d
  • Este comando recrea solo los servicios cuya configuración ha cambiado, minimizando el tiempo de inactividad.

Monitorización y resolución de problemas en aplicaciones multicontenedor con Compose

Al ejecutar múltiples contenedores, la monitorización y la resolución de problemas son fundamentales. Docker Compose proporciona herramientas para ayudarte a observar el estado y los registros de tus servicios. Puedes ver la salida de todos los contenedores en tiempo real con:

docker compose logs -f

Este comando transmite los registros de todos los servicios, facilitando la detección de errores o problemas a medida que ocurren. Si necesitas centrarte en un servicio en particular, especifica su nombre:

docker compose logs db

Para la resolución de problemas, puedes acceder a un contenedor en ejecución usando:

docker compose exec app sh

Este comando te proporciona una terminal dentro del contenedor app, permitiéndote inspeccionar archivos, ejecutar comandos de diagnóstico o revisar variables de entorno. La monitorización del uso de recursos y el estado de los contenedores también puede realizarse con herramientas estándar de Docker, como docker stats.

1. ¿Qué clave en un archivo docker-compose.yml garantiza que un servicio se inicie antes que otro?

2. ¿Cómo se escala un servicio llamado worker a cinco instancias usando Docker Compose?

3. ¿Qué comando usarías para ver los registros en tiempo real de todos los servicios en ejecución en una aplicación Compose?

question mark

¿Qué clave en un archivo docker-compose.yml garantiza que un servicio se inicie antes que otro?

Selecciona la respuesta correcta

question mark

¿Cómo se escala un servicio llamado worker a cinco instancias usando Docker Compose?

Selecciona la respuesta correcta

question mark

¿Qué comando usarías para ver los registros en tiempo real de todos los servicios en ejecución en una aplicación Compose?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 3. Capítulo 3
some-alt