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
webes un servidor nginx que se ejecutará en el puerto8080. - El servicio
dbes 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 endocker-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.ymlcon 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.ymlen segundo plano (background).Loading...