Curso Docker

Docker Compose: Gestión de Multicontenedores

Docker Compose es una herramienta que facilita la ejecución de aplicaciones que requieren varios contenedores, como por ejemplo una aplicación web que necesita un servidor web, una base de datos, y un servicio de caché. Con Docker Compose, puedes definir y gestionar todos estos servicios en un solo archivo llamado docker-compose.yml.

Comandos Comunes de Docker Compose

1. docker-compose up: Iniciar los servicios definidos en un archivo docker-compose.yml

Este comando inicia todos los servicios (contenedores) que están definidos en el archivo docker-compose.yml. Si las imágenes de los servicios no están disponibles localmente, Docker Compose las descargará o las construirá.

Ejemplo:

1docker-compose up

Si deseas ejecutar los contenedores en segundo plano (modo "detached"), puedes usar:

1docker-compose up -d

Esto iniciará los contenedores en segundo plano y te devolverá el control de la terminal.

Ejemplo de archivo docker-compose.yml:

1version: '3'
2services:
3  web:
4    image: nginx
5    ports:
6      - "8080:80"
7  db:
8    image: postgres
9    environment:
10      POSTGRES_USER: user
11      POSTGRES_PASSWORD: password

En este archivo:

  • El servicio web es un servidor nginx que se ejecutará en el puerto 8080.
  • El servicio db es una base de datos PostgreSQL con credenciales definidas por las variables de entorno.

2. docker-compose down: Detener y eliminar todos los contenedores definidos en docker-compose.yml

Este comando detiene todos los contenedores, redes, y volúmenes creados por Docker Compose. También los elimina para liberar espacio y recursos.

Ejemplo:

1docker-compose down

Si quieres eliminar los volúmenes asociados con los contenedores, puedes agregar la opción --volumes:

1docker-compose down --volumes

3. docker-compose ps: Listar contenedores iniciados por Docker Compose

Este comando muestra el estado de los contenedores iniciados por Docker Compose. Es útil para verificar qué servicios están en ejecución y su estado.

Ejemplo:

1docker-compose ps

Salida esperada:

Name                 Command              State           Ports
--------------------------------------------------------------------------
web_1   nginx -g 'daemon of...'      Up      0.0.0.0:8080->80/tcp
db_1    docker-entrypoint.sh postgres Up     5432/tcp

Aquí puedes ver los contenedores (web_1, db_1), su estado (si están en ejecución), y los puertos asignados.


4. docker-compose build: Construir imágenes para los servicios definidos en docker-compose.yml

Este comando construye las imágenes de los servicios definidos en el archivo docker-compose.yml si se especifica un Dockerfile. Esto es útil cuando tienes configuraciones personalizadas para las imágenes.

Ejemplo:

1docker-compose build

Este comando construirá las imágenes antes de ejecutar los servicios. Si ya tienes imágenes preconstruidas o descargadas, no es necesario volver a construirlas a menos que hayas realizado cambios en los Dockerfiles.


5. docker-compose logs: Ver los logs de los contenedores gestionados por Docker Compose

Este comando muestra los registros (logs) generados por los servicios que Docker Compose está ejecutando. Es útil para depurar problemas o monitorear la actividad de los servicios.

Ejemplo:

1docker-compose logs

Si solo quieres ver los logs de un servicio específico, por ejemplo web:

1docker-compose logs web

6. docker-compose exec <servicio> <comando>: Ejecutar un comando en un contenedor gestionado por Docker Compose

Este comando te permite ejecutar comandos dentro de un contenedor en ejecución. Es similar a docker exec, pero se usa para contenedores gestionados por Docker Compose.

Ejemplo:

1docker-compose exec web /bin/bash

Esto te da una terminal interactiva dentro del contenedor del servicio web (en este caso, es un contenedor de nginx), donde puedes ejecutar comandos como si estuvieras dentro del contenedor.


Resumen de los Comandos

  • docker-compose up: Inicia todos los servicios definidos en docker-compose.yml.
  • docker-compose down: Detiene y elimina los contenedores, redes y volúmenes asociados a los servicios.
  • docker-compose ps: Lista los contenedores en ejecución que fueron iniciados por Docker Compose.
  • docker-compose build: Construye las imágenes para los servicios definidos.
  • docker-compose logs: Muestra los logs generados por los servicios.
  • docker-compose exec: Ejecuta comandos en un contenedor gestionado por Docker Compose.

Estos comandos te permiten gestionar de manera eficiente aplicaciones que requieren múltiples contenedores, simplificando el despliegue, monitoreo y administración de todos los servicios involucrados.

  • Loading...
  • Tienes un fichero llamado docker-compose.yml con este contenido.

    1version: '3.8' # Versión del formato de Docker Compose
    2
    3services:
    4  web:
    5    image: nginx:latest   # Usa la imagen oficial de NGINX
    6    ports:
    7      - "8080:80"         # Mapea el puerto 80 del contenedor al puerto 8080 en la máquina local
    8    volumes:
    9      - ./html:/usr/share/nginx/html  # Monta la carpeta local ./html en el directorio de NGINX para servir contenido HTML
    10    depends_on:
    11      - db                # Define que el servicio web depende de que el servicio de base de datos esté listo
    12
    13  db:
    14    image: postgres:latest # Usa la imagen oficial de PostgreSQL
    15    environment:
    16      POSTGRES_USER: myuser      # Usuario de la base de datos
    17      POSTGRES_PASSWORD: mypassword  # Contraseña del usuario
    18      POSTGRES_DB: mydatabase    # Base de datos que se creará al inicio
    19    volumes:
    20      - pgdata:/var/lib/postgresql/data  # Usa un volumen para persistir los datos de la base de datos
    21
    22# Definición de volúmenes
    23volumes:
    24  pgdata:

    Tu tarea es inicia todos los servicios (contenedores) que están definidos en el archivo docker-compose.yml en segundo plano (background).

    Loading...