Mastering Docker Compose: Essential Commands ExplainedDocker Compose is a powerful tool that simplifies the management of multi-container Docker applications. It allows you to define and run complex applications with multiple services using a single configuration file. In this article, we'll explore the essential Docker Compose commands that every developer should know to effectively manage their containerized applications.1. docker-compose upThe docker-compose up command is used to start your application and its services. It reads the docker-compose.yml file in your current directory and creates and starts all the services defined in it.Usage: ``` docker-compose up ```Options: - `-d` or `--detach`: Run containers in the background - `--build`: Build images before starting containers - `--force-recreate`: Recreate containers even if their configuration hasn't changed - `--no-deps`: Don't start linked servicesExample: ``` docker-compose up -d --build ```This command will build the images if necessary and start the containers in detached mode.2. docker-compose downThe docker-compose down command stops and removes containers, networks, images, and volumes defined in your docker-compose.yml file.Usage: ``` docker-compose down ```Options: - `-v` or `--volumes`: Remove named volumes declared in the "volumes" section of the Compose file and anonymous volumes attached to containers - `--rmi type`: Remove images. Type must be one of: 'all': Remove all images, 'local': Remove only images that don't have a custom tagExample: ``` docker-compose down -v ```This command will stop and remove containers, networks, and volumes.3. docker-compose psThe docker-compose ps command lists the containers managed by Docker Compose.Usage: ``` docker-compose ps ```Options: - `-q` or `--quiet`: Only display IDs - `--services`: Display servicesExample: ``` docker-compose ps ```This command will show the status of all containers managed by Docker Compose.4. docker-compose logsThe docker-compose logs command displays log output from services.Usage: ``` docker-compose logs [SERVICE...] ```Options: - `-f` or `--follow`: Follow log output - `--tail="all"`: Number of lines to show from the end of the logs for each containerExample: ``` docker-compose logs -f web ```This command will show and follow the logs of the 'web' service.5. docker-compose execThe docker-compose exec command runs a command in a running container.Usage: ``` docker-compose exec [options] SERVICE COMMAND [ARGS...] ```Options: - `-d` or `--detach`: Detached mode: Run command in the background - `-T`: Disable pseudo-tty allocationExample: ``` docker-compose exec web bash ```This command will open a bash shell in the running 'web' container.6. docker-compose buildThe docker-compose build command builds or rebuilds services.Usage: ``` docker-compose build [options] [SERVICE...] ```Options: - `--no-cache`: Do not use cache when building the image - `--pull`: Always attempt to pull a newer version of the imageExample: ``` docker-compose build --no-cache ```This command will rebuild all services without using the cache.7. docker-compose pullThe docker-compose pull command pulls service images.Usage: ``` docker-compose pull [options] [SERVICE...] ```Options: - `--ignore-pull-failures`: Pull what it can and ignores images with pull failures - `--parallel`: Pull multiple images in parallelExample: ``` docker-compose pull ```This command will pull the latest versions of all service images.8. docker-compose restartThe docker-compose restart command restarts all stopped and running services.Usage: ``` docker-compose restart [options] [SERVICE...] ```Options: - `-t` or `--timeout TIMEOUT`: Specify a shutdown timeout in seconds (default: 10)Example: ``` docker-compose restart web ```This command will restart the 'web' service.9. docker-compose scaleThe docker-compose scale command sets the number of containers to run for a service.Usage: ``` docker-compose scale [options] [SERVICE=NUM...] ```Example: ``` docker-compose scale web=3 ```This command will scale the 'web' service to run 3 containers.10. docker-compose configThe docker-compose config command validates and views the Compose file.Usage: ``` docker-compose config [options] ```Options: - `--quiet` or `-q`: Only validate the configuration, don't print anything - `--services`: Print the service names, one per lineExample: ``` docker-compose config ```This command will validate the Compose file and print the configuration.ConclusionDocker Compose provides a powerful set of commands to manage multi-container Docker applications. By mastering these essential commands, you can efficiently develop, test, and deploy complex applications with ease. Remember to always refer to the official Docker Compose documentation for the most up-to-date information and additional options for each command.

Docker Compose simplifies multi-container Docker applications. This article explores essential commands like `up`, `down`, and `logs`, providing clarity on managing service lifecycles efficiently.
Índice
Dominando-Docker-Compose-Comandos-Esenciales-Explicados-2

Comandos de Docker Compose: Una guía completaDocker Compose es una herramienta poderosa que permite definir y ejecutar aplicaciones Docker de múltiples contenedores. Utiliza archivos YAML para configurar los servicios de la aplicación y con un solo comando, puedes crear y comenzar todos los servicios desde tu configuración. En esta guía, exploraremos los comandos más utilizados de Docker Compose y sus funcionalidades.1. docker-compose upEste es el comando más básico y comúnmente utilizado en Docker Compose. Inicia todos los servicios definidos en tu archivo docker-compose.yml.```bash docker-compose up ```Para iniciar los servicios en segundo plano, utiliza la opción -d:```bash docker-compose up -d ```2. docker-compose downEste comando detiene y elimina los contenedores, redes, volúmenes e imágenes creados por up.```bash docker-compose down ```3. docker-compose psEnumera los contenedores que se están ejecutando actualmente.```bash docker-compose ps ```4. docker-compose stopDetiene los servicios sin eliminarlos.```bash docker-compose stop ```5. docker-compose startInicia los servicios que fueron detenidos.```bash docker-compose start ```6. docker-compose restartReinicia los servicios.```bash docker-compose restart ```7. docker-compose logsMuestra los registros de los servicios.```bash docker-compose logs ```Para seguir los registros en tiempo real, utiliza la opción -f:```bash docker-compose logs -f ```8. docker-compose execEjecuta un comando en un contenedor en ejecución.```bash docker-compose exec service_name command ```Por ejemplo, para abrir una shell en un contenedor de servicio web:```bash docker-compose exec web bash ```9. docker-compose runEjecuta un comando en un nuevo contenedor.```bash docker-compose run service_name command ```10. docker-compose buildConstruye o reconstruye los servicios.```bash docker-compose build ```11. docker-compose pullExtrae las imágenes de Docker para los servicios.```bash docker-compose pull ```12. docker-compose configValida y muestra la configuración.```bash docker-compose config ```13. docker-compose imagesEnumera las imágenes utilizadas por los servicios.```bash docker-compose images ```14. docker-compose pausePausa los servicios.```bash docker-compose pause ```15. docker-compose unpauseReanuda los servicios pausados.```bash docker-compose unpause ```16. docker-compose portMuestra el puerto público asignado a un puerto privado.```bash docker-compose port service_name private_port ```17. docker-compose topMuestra los procesos principales que se ejecutan en el entorno local.```bash docker-compose top ```18. docker-compose killFuerza el cierre de los servicios.```bash docker-compose kill ```19. docker-compose rmElimina los contenedores detenidos.```bash docker-compose rm ```20. docker-compose scaleEstablece el número de contenedores para un servicio.```bash docker-compose scale service_name=number_of_containers ```Estos comandos cubren la mayoría de las operaciones que necesitarás realizar con Docker Compose. Recuerda que puedes combinar estos comandos con varias opciones para adaptarlos a tus necesidades específicas. Docker Compose es una herramienta poderosa que simplifica la gestión de aplicaciones de múltiples contenedores, haciendo que el desarrollo y el despliegue sean mucho más eficientes.

Docker ha revolucionado la forma en que se desarrollan, despliegan y gestionan las aplicaciones. En el corazón de esta transformación se encuentra Docker Compose, una herramienta poderosa que permite a los desarrolladores definir y ejecutar aplicaciones Docker multi-contenedor. En esta guía completa, profundizaremos en los comandos de Docker Compose, sus funcionalidades y ejemplos prácticos que te ayudarán a volverte experto en la gestión de tus entornos Docker.

¿Qué es Docker Compose?

Docker Compose is a tool for defining and running multi-container Docker applications. With Compose, you can configure your application’s services, networks, and volumes in a single YAML file (usually named docker-compose.ymlEste archivo le permite especificar cómo deben comportarse, comunicarse y persistir los datos de sus contenedores.

Componentes Clave de Docker Compose

  1. ServiciosEstos son los contenedores que componen tu aplicación. Cada servicio está definido en el... docker-compose.yml archivo.
  2. Networks: Estos permiten que tus servicios se comuniquen entre sí. Docker Compose crea automáticamente una red para tu aplicación, pero también puedes definir redes personalizadas.
  3. Volumes: These are used for persistent data storage. You can define volumes to ensure data remains available even if the containers are stopped or removed.

Installing Docker Compose

Antes de sumergirnos en los comandos de Docker Compose, es fundamental tener Docker instalado en tu sistema. Puedes seguir las instrucciones oficiales de la Documentación de Docker para instalar Docker.

To install Docker Compose, you can use the following command for most systems (make sure to replace the version number with the latest release):

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

After installation, verify it by running:

docker-compose --versión

Basic Docker Compose Commands

Now that we have a basic understanding of Docker Compose, let’s explore the essential commands.

1. docker-compose up

Este comando es la piedra angular de Docker Compose. Crea e inicia todos los contenedores definidos en el docker-compose.yml archivo.

docker-compose up

You can run this command with the - flag to start the containers in detached mode, which runs them in the background:

docker-compose iniciar -d

Ejemplo

Consider a simple web application defined in docker-compose.yml:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"

Running docker-compose up will start an Nginx server that listens on port 80.

2. docker-compose down

El abajo El comando detiene y elimina todos los contenedores definidos en tu docker-compose.yml file. It also removes the networks associated with the services.

docker-compose down

Puedes agregar el -v opción de también eliminar los volúmenes asociados:

docker-compose down -v

3. docker-compose ps

This command lists the containers that are part of the application. It provides a quick overview of their current state.

docker-compose ps

4. docker-compose exec

To execute a command inside a running container, use the ejecutar command. This is particularly useful for debugging.

docker-compose exec  

Ejemplo

To open a shell in the web servicio:

docker-compose exec web /bin/bash

5. docker-compose logs

Este comando muestra los registros de todos los servicios o de los servicios especificados. Es invaluable para la resolución de problemas.

docker-compose logs

For real-time logs, use the -f (follow) option:

docker-compose logs -f

6. docker-compose build

Si estás utilizando un Dockerfile para construir tus imágenes, el build comando construye los servicios definidos en tu docker-compose.yml.

docker-compose build

7. docker-compose pull

Para descargar las imágenes más recientes de tus servicios, usa el pull command. This will update your local images without rebuilding them.

docker-compose pull

8. docker-compose push

El push El comando se utiliza para subir tus imágenes construidas a un registro de Docker.

docker-compose push

9. docker-compose reiniciar

Si necesitas reiniciar tus servicios por cualquier motivo, puedes usar el... reiniciar comando:

docker-compose reiniciar

10. docker-compose scale

El escala command allows you to define the number of container instances for a service.

docker-compose scale =

Ejemplo

Para escalar la web service to 3 instances:

docker-compose scale web=3

Advanced Docker Compose Features

Habiendo cubierto los comandos básicos, ahora podemos explorar algunas características avanzadas de Docker Compose.

Environment Variables

Puedes usar variables de entorno en tu docker-compose.yml file to manage different configurations for different environments. Create a .env archivo en el mismo directorio que tu docker-compose.yml file to define your variables.

Ejemplo .env file

NOMBRE_DB=mibasededatos
USUARIO_DB=usuario
CONTRASEÑA_DB=contraseña

Ejemplo docker-compose.yml

versión: '3'
servicios:
  db:
    imagen: postgres
    entorno:
      POSTGRES_DB: ${NOMBRE_DB}
      POSTGRES_USER: ${USUARIO_DB}
      POSTGRES_PASSWORD: ${CONTRASEÑA_DB}

Anulaciones de Docker ComposeEn el capítulo anterior, aprendiste a crear un archivo docker-compose.yml para definir y ejecutar una aplicación de varios contenedores. Sin embargo, es posible que necesites personalizar la configuración para diferentes entornos o escenarios. Es aquí donde entran en juego las anulaciones de Docker Compose.Las anulaciones de Docker Compose te permiten definir archivos de configuración adicionales que modifican o extienden la configuración base definida en el archivo docker-compose.yml principal. Estos archivos de anulación se nombran típicamente docker-compose.override.yml y se utilizan para proporcionar valores específicos del entorno o configuraciones adicionales.Veamos un ejemplo para ilustrar cómo funcionan las anulaciones de Docker Compose. Supongamos que tienes una aplicación web simple con dos servicios: una aplicación web y una base de datos. Tu archivo docker-compose.yml base podría verse así:```yaml version: '3' services: web: image: my-web-app ports: - "8000:8000" depends_on: - db db: image: postgres environment: POSTGRES_PASSWORD: example ```Ahora, imagina que quieres personalizar esta configuración para diferentes entornos, como desarrollo, pruebas y producción. Puedes crear archivos de anulación separados para cada entorno:**docker-compose.override.yml (para desarrollo):**```yaml version: '3' services: web: volumes: - ./app:/app environment: - DEBUG=true db: ports: - "5432:5432" ```**docker-compose.test.yml (para pruebas):**```yaml version: '3' services: web: environment: - TESTING=true db: environment: - POSTGRES_DB=test_db ```**docker-compose.prod.yml (para producción):**```yaml version: '3' services: web: ports: - "80:8000" environment: - PRODUCTION=true db: environment: - POSTGRES_DB=prod_db ```En este ejemplo, el archivo docker-compose.override.yml se utiliza para el entorno de desarrollo. Monta el código de la aplicación como un volumen y habilita el modo de depuración. El archivo docker-compose.test.yml se utiliza para el entorno de pruebas y establece la variable de entorno TESTING. El archivo docker-compose.prod.yml se utiliza para el entorno de producción y expone el servicio web en el puerto 80.Para utilizar estos archivos de anulación, puedes ejecutar el siguiente comando:```bash docker-compose -f docker-compose.yml -f docker-compose.override.yml up ```Este comando fusionará la configuración del archivo docker-compose.yml base con la configuración del archivo docker-compose.override.yml y creará los contenedores en consecuencia.De manera similar, puedes utilizar los archivos de anulación específicos del entorno:```bash # Para desarrollo docker-compose -f docker-compose.yml -f docker-compose.override.yml up# Para pruebas docker-compose -f docker-compose.yml -f docker-compose.test.yml up# Para producción docker-compose -f docker-compose.yml -f docker-compose.prod.yml up ```Las anulaciones de Docker Compose proporcionan una forma flexible de personalizar la configuración de tu aplicación para diferentes entornos sin modificar el archivo docker-compose.yml base. Esto te permite mantener una configuración base consistente mientras adaptas configuraciones específicas según sea necesario.En resumen, las anulaciones de Docker Compose te permiten definir archivos de configuración adicionales que modifican o extienden la configuración base definida en el archivo docker-compose.yml principal. Estos archivos de anulación se utilizan para proporcionar valores específicos del entorno o configuraciones adicionales. Al utilizar archivos de anulación, puedes personalizar fácilmente la configuración de tu aplicación para diferentes entornos sin modificar el archivo base.

Docker Compose allows you to override settings in docker-compose.yml con un archivo llamado docker-compose.sobrescritura.yml. Esto es útil para configuraciones de desarrollo local que no deben incluirse en producción.

Perfiles

Docker Compose supports profiles, allowing you to define services that should run together in different environments.

Ejemplo docker-compose.yml

versión: '3.9'
servicios:
  web:
    imagen: nginx
    perfiles:
      - desarrollo
  db:
    imagen: postgres
    perfiles:
      - desarrollo
      - producción

Para iniciar los servicios en un perfil específico, use:

docker-compose --profile development up

Health Checks

You can define health checks for your services to ensure they are running correctly.

Ejemplo

servicios:
  web:
    imagen: nginx
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/"]
      intervalo: 30s
      timeout: 10s
      reintentos: 3

Networking

By default, Docker Compose creates a network for your application. However, you can define your custom networks.

Ejemplo docker-compose.yml

version: '3'
services:
  web:
    image: nginx
    networks:
      - red_personalizada
  db:
    image: postgres
    networks:
      - red_personalizada

networks:
  red_personalizada:

Best Practices for Using Docker Compose

As you become more familiar with Docker Compose commands, consider the following best practices:

  1. Mantén tu docker-compose.yml Organized: Utiliza comentarios y una estructura consistente para garantizar la legibilidad.
  2. Utilice Control de versionesSiempre mantén tus docker-compose.yml and related files in version control.
  3. Limit Container PrivilegesEvita ejecutar contenedores como root. Define los permisos de usuario en tu Dockerfile o docker-compose.yml.
  4. Utiliza volúmenes con nombre: For persistent data, use named volumes instead of container-specific paths.
  5. Optimize Build Context: Limita el contexto de compilación solo a los archivos necesarios, reduciendo el tiempo de compilación y el tamaño de la imagen.

Conclusión

Docker Compose es una herramienta poderosa que simplifica el desarrollo y la gestión de aplicaciones con múltiples contenedores. Al dominar los comandos y características discutidos en esta guía, podrás ejecutar y gestionar tus aplicaciones de manera más eficiente. Recuerda experimentar con diferentes configuraciones y prácticas para encontrar lo que mejor funcione para tus necesidades específicas.

As Docker and its ecosystem continue to evolve, staying updated on the latest features and best practices will further enhance your proficiency in using Docker Compose effectively. Happy containerizing!