GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Una guía rápida para usar Docker Compose

Docker Compose es una herramienta que se integra de forma nativa con Docker y hace que la administración de aplicaciones de varios contenedores sea muy sencilla.

Los beneficios que proporciona Docker Compose son numerosos, algunos de los cuales incluyen:

  1. Administre redes de contenedores fácilmente: Conectar dos contenedores a través de una red Docker es súper simple en Docker Compose, es tan simple como definir una red y decirle a los contenedores que se conecten a ella. Además, Docker Compose puede crear y destruir automáticamente redes a medida que crea y destruye los propios contenedores.
  2. Dependencias del contenedor: Tiene un contenedor Docker que necesita otro contenedor Docker para estar en funcionamiento, por ejemplo, una base de datos. Docker Compose le permite definir dependencias para un contenedor, lo que requiere que las dependencias estén en funcionamiento antes de que comience cualquier otra cosa.
  3. Configuraciones reproducibles: Dado que la configuración del contenedor se definirá incluso antes de que se cree nada, esto permite la reproducibilidad de las configuraciones, lo que facilita su transferencia a otros sistemas. Si bien teóricamente podría hacerlo en algo como Bash, puede hacer que las cosas sean menos flexibles y más difíciles de adaptar al cambio.

Instalando Docker Compose en Linux

Docker Compose está disponible en la mayoría de los repositorios de distribución.

Puede instalar Docker Compose en distribuciones basadas en Ubuntu y Debian usando el siguiente comando:

sudo apt install docker-compose

En Arch y Manjaro, puede usar:

sudo pacman -S docker-compose

En Fedora, puede usar el comando dnf:

sudo dnf install docker-compose

Es posible que deba esforzarse un poco más para instalar Docker Compose en CentOS.

Para cualquier otra distribución, siempre puede consultar los documentos de instalación para obtener información sobre cómo obtener los paquetes necesarios.

Creando nuestro primer archivo de composición de Docker

Esta guía asume que ya está familiarizado y se siente cómodo con la herramienta CLI de docker. Si no es así, considere hacerlo, ya que de lo contrario probablemente se encontrará con un montón de contratiempos simples.

Los archivos de Docker Compose se almacenan con el nombre docker-compose.yml , y se encuentran automáticamente cuando ejecuta docker-compose comandos en el mismo directorio. Su sintaxis toma la forma de, lo adivinaste, YAML.

Tenemos un tutorial dedicado a los conceptos básicos de YAML si está interesado en aprender sobre él.

Conceptos básicos de YAML que todo ingeniero de DevOps debe saber Como ingeniero de DevOps, trabajará mucho con archivos YAML. Siempre es una buena idea comprender la sintaxis básica de YAML. Manual de LinuxRakesh Jain

Vamos a comenzar con un archivo que crea una instancia de Nextcloud, luego repasaremos cómo realmente hizo lo que hizo.

Lo primero es lo primero, debe crear el archivo de composición. Cree un directorio vacío en su sistema y cree el docker-compose.yml archivo.

A continuación, rellene el archivo con el siguiente contenido:

version: '3.5'
services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

networks:
  nextcloud:
    name: nextcloud_docker_network

Ahora todo lo que tiene que ejecutar es docker-compose up -d , y habría implementado correctamente Nextcloud con Docker.

Aquí está la página de inicio de sesión de Nextcloud.

Comprensión de nuestro Docker Compose File

Ahora que ha visto que el archivo realmente funciona, repasemos el contenido del archivo para que pueda comprender qué está haciendo exactamente.

La etiqueta 'versión'

version: '3.5'

Lo primero es lo primero, la version etiqueta. Esto solo especifica la versión del formato de archivo de Docker Compose, ya que las diferentes versiones tendrán una sintaxis diferente. Por lo general, desea mantener esto en la última versión, pero no es necesario, lo que puede ser útil si tiene algunos archivos heredados.

La etiqueta 'servicios'

services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

A continuación, verá los services etiqueta. Esto inicia la lista de todas las aplicaciones que se crean cuando docker-compose up -d se ejecutó.

Seguido de esto, comenzamos la lista de nuestro primer contenedor, nextcloud_app . Esto sirve como identificador de la aplicación, que pueden usar otros comandos de Docker Compose. Tenga en cuenta que esto no es el nombre del contenedor en sí, que se especifica en la siguiente parte.

Ahora, comienza a definir todo sobre tu contenedor. Aquí hay un resumen de lo que significan todos los campos, aunque la mayoría debería explicarse por sí mismo si ya conoce Docker:

  • container_name - Define el nombre del contenedor. Equivalente a --name opción.
  • image - Define de qué imagen extraer para el contenedor.
  • restart - Define la política de reinicio para el contenedor. Equivalente a --restart .
  • networks - Define una red a la que se conecta el contenedor. Esta red se puede crear o ya puede existir. Este valor sirve como identificador para docker-compose y no es el nombre real de la red (eso está definido en networks sección de etiquetas).
  • ports - Define los puertos de host a los que se puede conectar el contenedor. Equivalente a --publish .
  • volumes - Define volúmenes para el contenedor. Equivalente a --volume .
  • environment - Define variables de entorno para el contenedor. Equivalente a --env . Esta opción admite dos tipos de sintaxis. El primero es variable: value , que es lo que se usa aquí. La otra opción, que puede resultarte más familiar si estás acostumbrado a la docker La sintaxis de la CLI es - variable=value .
  • depends_on - Especifica las dependencias del contenedor. Esto se usa para requerir que un contenedor no se inicie hasta que sus dependencias lo hayan hecho. Esto acepta valores de las listas de contenedores. (No container_name !)

La etiqueta 'redes'

networks:
  nextcloud:
    name: nextcloud_docker_network

Ahora llegas a las networks etiqueta. Esto se usa para definir las redes que enumeramos en networks para nuestros contenedores.

Dentro de las networks sección, primero enumera el identificador que le dio a la red en services . Toma, eso fue nextcloud .

A continuación, define el nombre de la red que se puede ver con docker network ls . Aquí, lo llamamos nextcloud_docker_network .

Si quisiera que los contenedores se unieran a una red que ya existía, usaría la siguiente sintaxis, reemplazando network_name con el nombre de la red Docker:

networks:
  nextcloud:
    external: true
    name: network_name

Y ahí tienes ¡Eso resume todo el archivo!

Puede nombrar el archivo yml como quiera, pero luego tendrá que especificar el nombre del archivo cuando use los comandos docker-compose. Mantener la tradición y nombrarlo docker-compose.yml mantiene los comandos cortos.

Cierre

Ahora conoce los conceptos básicos para usar Docker Compose y los beneficios que puede obtener a través de su uso. Ahora también está en camino de comprender lo que hacen las personas cuando distribuyen sus contenedores a través de los archivos de Compose.

¿Algo no funciona o tienes algunas preguntas persistentes? Le invitamos a dejarlos en la sección de comentarios a continuación.


Docker
  1. Configurar Nextcloud con Redis usando Docker

  2. Implemente WordPress en Docker usando Ansible

  3. Implemente Nextcloud en Docker usando Ansible

  4. Cómo usar Docker Compose

  5. Configuración del nombre de host en Docker Compose

De Docker Compose a Kubernetes con Podman

Instalar Navidrome usando Docker

Todo lo que necesita saber sobre el uso de Docker Compose

Cómo ejecutar Jenkins en Docker usando Docker Compose con Volúmenes

Cómo instalar Docker Compose en Ubuntu

Uso de Docker Desktop para administrar un contenedor