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

Cómo instalar y usar Docker Compose en Ubuntu 20.04

Introducción

Docker simplifica el proceso de gestión de procesos de aplicaciones en contenedores. Si bien los contenedores son similares a las máquinas virtuales en ciertos aspectos, son más livianos y amigables con los recursos. Esto permite a los desarrolladores dividir un entorno de aplicación en múltiples servicios aislados.

Para las aplicaciones que dependen de varios servicios, organizar todos los contenedores para que se inicien, comuniquen y apaguen juntos puede volverse difícil de manejar rápidamente. Docker Compose es una herramienta que le permite ejecutar entornos de aplicaciones de varios contenedores en función de las definiciones establecidas en un archivo YAML. Utiliza definiciones de servicio para crear entornos totalmente personalizables con varios contenedores que pueden compartir redes y volúmenes de datos.

En esta guía, demostrará cómo instalar Docker Compose en un servidor Ubuntu 20.04 y cómo comenzar a usar esta herramienta.

Requisitos

Para seguir este artículo, necesitará:

  • Acceso a una máquina local Ubuntu 20.04 o servidor de desarrollo como usuario no root con privilegios sudo. Si está utilizando un servidor remoto, es recomendable tener instalado un firewall activo. Para configurarlos, consulte nuestra Guía de configuración inicial del servidor para Ubuntu 20.04.
  • Docker instalado en su servidor o máquina local, siguiendo los Pasos 1 y 2 de Cómo instalar y usar Docker en Ubuntu 20.04.

Nota: Este tutorial lo guiará a través de la instalación de Docker Compose v1, que usa docker-compose . A partir de Docker Compose v2, Docker ha migrado hacia el uso de compose Comando de complemento CLI como se documenta en nuestra última versión de Ubuntu 22.04 de este tutorial, y lejos del docker-compose original . Si bien la instalación difiere, en general, el uso real implica eliminar el guión de docker-compose llamadas para convertirse en docker compose . Para obtener detalles completos de compatibilidad, consulte la documentación oficial de Docker sobre la compatibilidad de comandos entre el nuevo compose y el antiguo docker-compose .

Paso 1:Instalación de Docker Compose

Para asegurarse de obtener la versión estable más actualizada de Docker Compose, debe descargar este software desde su repositorio oficial de Github.

Primero, confirme la última versión disponible en su página de lanzamientos. En el momento de escribir este artículo, la versión estable más actual es 1.29.2 .

El siguiente comando descargará el 1.29.2 libere y guarde el archivo ejecutable en /usr/local/bin/docker-compose , lo que hará que este software sea accesible globalmente como docker-compose :

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

A continuación, establezca los permisos correctos para que docker-compose el comando es ejecutable:

  1. sudo chmod +x /usr/local/bin/docker-compose

Para verificar que la instalación fue exitosa, puede ejecutar:

  1. docker-compose --version

Verá un resultado similar a este:

Outputdocker-compose version 1.29.2, build 5becea4c

Docker Compose ahora está instalado con éxito en su sistema. En la siguiente sección, verá cómo configurar un docker-compose.yml y obtenga un entorno en contenedores en funcionamiento con esta herramienta.

Paso 2:Configurar un docker-compose.yml Archivo

Para demostrar cómo configurar un docker-compose.yml y trabaja con Docker Compose, creará un entorno de servidor web utilizando la imagen oficial de Nginx de Docker Hub, el registro público de Docker. Este entorno en contenedores servirá un único archivo HTML estático.

Comience creando un nuevo directorio en su carpeta de inicio y luego muévase a él:

  1. mkdir ~/compose-demo
  2. cd ~/compose-demo

En este directorio, configure una carpeta de aplicación para que sirva como la raíz del documento para su entorno Nginx:

  1. mkdir app

Usando su editor de texto preferido, cree un nuevo index.html archivo dentro de la app carpeta:

  1. nano app/index.html

Coloque el siguiente contenido en este archivo:

~/compose-demo/app/index.html
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/water.css@latest/dist/dark.min.css">
</head>
<body>

    <h1>This is a Docker Compose Demo Page.</h1>
    <p>This content is being served by an Nginx container.</p>

</body>
</html>

Guarde y cierre el archivo cuando haya terminado. Si está utilizando nano , puedes hacerlo escribiendo CTRL+X , luego Y y ENTER para confirmar.

A continuación, cree el docker-compose.yml archivo:

  1. nano docker-compose.yml

Inserte el siguiente contenido en su docker-compose.yml archivo:

docker-compose.yml
version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

docker-compose.yml el archivo normalmente comienza con la version definición. Esto le indicará a Docker Compose qué versión de configuración está utilizando.

Entonces tienes los services bloque, donde se configuran los servicios que forman parte de este entorno. En tu caso, tienes un único servicio llamado web . Este servicio utiliza el nginx:alpine image y configura una redirección de puertos con ports directiva. Todas las solicitudes en el puerto 8000 del anfitrión máquina (el sistema desde el que está ejecutando Docker Compose) será redirigido a la web contenedor en el puerto 80 , donde se ejecutará Nginx.

Los volumes directiva creará un volumen compartido entre la máquina host y el contenedor. Esto compartirá la app local carpeta con el contenedor, y el volumen se ubicará en /usr/share/nginx/html dentro del contenedor, que luego sobrescribirá la raíz del documento predeterminado para Nginx.

Guarde y cierre el archivo.

Ha configurado una página de demostración y un docker-compose.yml archivo para crear un entorno de servidor web en contenedores que lo atenderá. En el siguiente paso, traerá este entorno con Docker Compose.

Paso 3:Ejecutar Docker Compose

Con docker-compose.yml archivo en su lugar, ahora puede ejecutar Docker Compose para abrir su entorno. El siguiente comando descargará las imágenes Docker necesarias, creará un contenedor para la web servicio y ejecute el entorno en contenedores en modo de fondo:

  1. docker-compose up -d

Docker Compose primero buscará la imagen definida en su sistema local y, si no puede localizar la imagen, la descargará de Docker Hub. Verá un resultado como este:

OutputCreating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done

Nota: Si se encuentra con un error de permiso relacionado con el socket de Docker, esto significa que omitió el paso 2 de Cómo instalar y usar Docker en Ubuntu 20.04. Retroceder y completar ese paso habilitará los permisos para ejecutar comandos de la ventana acoplable sin sudo .

Su entorno ya está funcionando en segundo plano. Para verificar que el contenedor está activo, puede ejecutar:

  1. docker-compose ps

Este comando le mostrará información sobre los contenedores en ejecución y su estado, así como cualquier redirección de puerto actualmente en su lugar:

Output       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
compose-demo_web_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp

Ahora puede acceder a la aplicación de demostración dirigiendo su navegador a localhost:8000 si está ejecutando esta demostración en su máquina local, o your_server_domain_or_IP:8000 si está ejecutando esta demostración en un servidor remoto.

Verás una página como esta:

El volumen compartido que configuró dentro de docker-compose.yml El archivo guarda tu app archivos de carpeta sincronizados con la raíz del documento del contenedor. Si realiza algún cambio en el index.html archivo, el contenedor los recogerá automáticamente y, por lo tanto, se reflejarán en su navegador cuando vuelva a cargar la página.

En el siguiente paso, verá cómo administrar su entorno en contenedores con los comandos de Docker Compose.

Paso 4:familiarizarse con los comandos de Docker Compose

Has visto cómo configurar un docker-compose.yml archivo y active su entorno con docker-compose up . Ahora verá cómo usar los comandos de Docker Compose para administrar e interactuar con su entorno en contenedores.

Para verificar los registros producidos por su contenedor Nginx, puede usar los logs comando:

  1. docker-compose logs

Verá un resultado similar a este:

OutputAttaching to compose-demo_web_1
web_1  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1  | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1  | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1  | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1  | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

Si desea pausar la ejecución del entorno sin cambiar el estado actual de sus contenedores, puede usar:

  1. docker-compose pause
OutputPausing compose-demo_web_1 ... done

Para reanudar la ejecución después de emitir una pausa:

  1. docker-compose unpause
OutputUnpausing compose-demo_web_1 ... done

La stop El comando finalizará la ejecución del contenedor, pero no destruirá ningún dato asociado con sus contenedores:

  1. docker-compose stop
OutputStopping compose-demo_web_1 ... done

Si desea eliminar los contenedores, las redes y los volúmenes asociados con este entorno en contenedores, use el botón down comando:

  1. docker-compose down
OutputRemoving compose-demo_web_1 ... done
Removing network compose-demo_default

Tenga en cuenta que esto no eliminará la imagen base utilizada por Docker Compose para activar su entorno (en su caso, nginx:alpine ). De esta manera, cada vez que vuelva a abrir su entorno con un docker-compose up , el proceso será mucho más rápido ya que la imagen ya está en su sistema.

En caso de que también desee eliminar la imagen base de su sistema, puede usar:

  1. docker image rm nginx:alpine
OutputUntagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Nota :Consulte nuestra guía sobre cómo instalar y usar Docker para obtener una referencia más detallada sobre los comandos de Docker.

Conclusión

En esta guía, ha visto cómo instalar Docker Compose y configurar un entorno en contenedores basado en una imagen de servidor web Nginx. También ha visto cómo administrar este entorno mediante los comandos de redacción.

Para obtener una referencia completa de todos los docker-compose disponibles comandos, consulte la documentación oficial.

Si está interesado en más usos de Docker Compose, consulte Cómo instalar WordPress con Docker Compose y también Cómo proteger una aplicación Node.js en contenedor con Nginx, Let's Encrypt y Docker Compose.


Docker
  1. Cómo instalar Docker Compose en Ubuntu 18.04

  2. Cómo instalar y usar Docker en Ubuntu 20.04

  3. Cómo instalar y usar Docker en Ubuntu 20.04

  4. Cómo instalar y usar Docker Compose en CentOS

  5. Cómo instalar Docker Compose en Ubuntu 18.04

Cómo instalar y usar Docker Compose en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu 22.04

Cómo instalar y usar Docker en Ubuntu (en el mundo real)

Cómo instalar Docker Compose en Ubuntu

Cómo instalar y usar Docker en Ubuntu 20.04

Cómo instalar y usar Docker Compose en Debian 11