Saltar al contenido principal

El Comando Docker Compose

El comando docker-compose es una herramienta esencial para gestionar aplicaciones multi-contenedor definidas en un archivo docker-compose.yml. Permite iniciar, detener, construir y administrar los contenedores definidos en dicho archivo. Es importante ejecutar estos comandos desde el directorio en el que se encuentra el archivo docker-compose.yml.

A continuación se detallan los subcomandos más utilizados y sus funciones:

Subcomandos Básicos

  • docker-compose up: Crea y arranca los contenedores descritos en el archivo docker-compose.yml. Si no se especifica el modo, se ejecuta en primer plano, mostrando los logs en la terminal.

    docker-compose up
  • docker-compose up -d: Crea y arranca los contenedores en segundo plano (modo detached). Los logs no se muestran en la terminal, permitiendo que el prompt esté disponible inmediatamente.

    docker-compose up -d
  • docker-compose stop: Detiene los contenedores que están en ejecución pero no los elimina. Esto permite reiniciarlos más tarde sin necesidad de reconstruirlos.

    docker-compose stop
  • docker-compose start: Inicia los contenedores que han sido previamente detenidos con docker-compose stop.

    docker-compose start
  • docker-compose run: Inicia un contenedor para un servicio específico, permitiendo ejecutar comandos en él. Utilizado a menudo para ejecutar tareas puntuales.

    docker-compose run <servicio> <comando>
  • docker-compose rm: Elimina los contenedores que están detenidos. La opción -f también eliminará los contenedores en ejecución.

    docker-compose rm
    docker-compose rm -f
  • docker-compose pause: Pausa todos los contenedores en ejecución, deteniendo sus procesos sin eliminarlos.

    docker-compose pause
  • docker-compose unpause: Reanuda los contenedores que fueron pausados previamente.

    docker-compose unpause
  • docker-compose restart: Reinicia los contenedores, útil para aplicar nuevas configuraciones o actualizaciones.

    docker-compose restart
  • docker-compose down: Detiene y elimina los contenedores, redes y volúmenes creados por docker-compose up. Es una forma limpia de eliminar todo el entorno definido en el archivo docker-compose.yml.

    docker-compose down
  • docker-compose down -v: Además de detener y eliminar los contenedores y redes, también elimina los volúmenes asociados, asegurando que no queden datos persistentes.

    docker-compose down -v

Comandos de Inspección y Diagnóstico

  • docker-compose logs: Muestra los logs de todos los servicios en el archivo docker-compose.yml. La opción -f permite seguir viendo los logs en tiempo real.

    docker-compose logs
    docker-compose logs -f
  • docker-compose logs <servicio>: Muestra los logs específicos de un servicio determinado.

    docker-compose logs <servicio>
  • docker-compose exec <servicio> <comando>: Ejecuta un comando en un contenedor en ejecución de un servicio específico. Por ejemplo, para abrir una shell en un contenedor:

    docker-compose exec <servicio> /bin/bash
  • docker-compose top: Muestra los procesos que están ejecutándose en cada uno de los contenedores de los servicios definidos.

    docker-compose top

Comandos de Construcción y Actualización

  • docker-compose build: Construye o reconstruye las imágenes de los servicios descritos en el archivo docker-compose.yml, utilizando los archivos Dockerfile especificados.

    docker-compose build
  • docker-compose pull: Descarga las imágenes de los servicios desde el registro, si están definidas en el archivo docker-compose.yml.

    docker-compose pull

Parámetros Adicionales

  • --file o -f: Permite especificar un archivo docker-compose.yml diferente al predeterminado. Útil para trabajar con múltiples configuraciones.

    docker-compose -f docker-compose.override.yml up
  • --project-name: Cambia el nombre del proyecto, lo cual afecta el nombre de los contenedores, redes y volúmenes.

    docker-compose --project-name myproject up

Para más detalles sobre todos los comandos y sus opciones, consulta la documentación oficial de Docker Compose.