Cómo instalar Docker Compose en Ubuntu 18.04

Introducción
Docker es una excelente herramienta para automatizar la implementación de aplicaciones Linux dentro de contenedores de software, pero para aprovechar al máximo su potencial, cada componente de una aplicación debe ejecutarse en su propio contenedor individual. En el caso de aplicaciones complejas con muchos componentes, organizar todos los contenedores para que se inicien, se comuniquen y se apaguen juntos puede volverse rápidamente una tarea difícil.
La comunidad Docker ideó una solución popular llamada Fig , que permitía utilizar un único archivo YAML para organizar todos los contenedores y configuraciones de Docker. Esta solución se volvió tan popular que el equipo de Docker decidió crear Docker Compose basándose en el código fuente de Fig, que ahora está obsoleto.
Docker Compose facilita a los usuarios la organización de los procesos de los contenedores Docker, incluidos el inicio, el apagado y la configuración de vínculos y volúmenes dentro de los contenedores. En este tutorial, instalará la última versión de Docker Compose para administrar aplicaciones de varios contenedores.
Prerrequisitos
Para seguir este artículo, necesitará un servidor Ubuntu 18.04 con lo siguiente:
- Un usuario no root con privilegios de sudo ( Configuración inicial del servidor con Ubuntu 18.04 explica cómo configurarlo).
- Docker instalado con las instrucciones del Paso 1 y Paso 2 de Cómo instalar y usar Docker en Ubuntu 18.04
Nota: Este tutorial lo guiará en la instalación de Docker Compose v1, que utiliza docker-compose
. A partir de Docker Compose v2, Docker ha migrado hacia el uso del compose
comando CLI plugin como se documenta en nuestra última versión Ubuntu 22.04 de este tutorial , y se ha alejado del original docker-compose
. Si bien la instalación difiere, en general, el uso real implica eliminar el guion de docker-compose
las llamadas para convertirse en docker compose
. Para obtener detalles completos sobre la 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
Aunque puedes instalar Docker Compose desde los repositorios oficiales de Ubuntu, hay varias versiones menores detrás de la última versión, por lo que instalarás Docker Compose desde el repositorio de GitHub de Docker. El comando a continuación es ligeramente diferente al que encontrarás en la página de versiones . Al usar el -o
indicador para especificar primero el archivo de salida en lugar de redirigir la salida, esta sintaxis evita que se produzca un error de permiso denegado que se produce al usar sudo
.
Verifique la versión actual y, si es necesario, actualícela con el siguiente comando:
- 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, configure los permisos:
- sudo chmod +x /usr/local/bin/docker-compose
Luego comprobarás que la instalación fue exitosa verificando la versión:
- docker-compose --version
Esto imprimirá la versión que instalaste:
Outputdocker-compose version 1.29.2, build 5becea4c
Ahora que tienes instalado Docker Compose, estás listo para ejecutar un ejemplo de “Hola mundo”.
Paso 2: Ejecutar un contenedor con Docker Compose
El registro público de Docker, Docker Hub, incluye una imagen de Hello World para demostración y prueba. Ilustra la configuración mínima necesaria para ejecutar un contenedor con Docker Compose: un archivo YAML que llama a una sola imagen:
Primero, crearás un directorio para el archivo YAML y te moverás hacia él:
- mkdir hello-world
- cd hello-world
Luego, crearás el archivo YAML:
- nano docker-compose.yml
Coloque el siguiente contenido en el archivo, guarde el archivo y salga del editor de texto:
docker-compose.yml
my-test: image: hello-world
La primera línea del archivo YAML se utiliza como parte del nombre del contenedor. La segunda línea especifica qué imagen se utilizará para crear el contenedor. Cuando ejecute el comando, docker-compose up
buscará una imagen local con el nombre que especificó. hello-world
Una vez que haya completado esta operación, guardará y saldrá del archivo.
Puede mirar manualmente las imágenes en su sistema con el docker images
comando:
- docker images
Cuando no hay imágenes locales, solo se muestran los encabezados de las columnas:
OutputREPOSITORY TAG IMAGE ID CREATED SIZE
Ahora, mientras aún estás en el ~/hello-world
directorio, ejecutarás el siguiente comando:
- docker-compose up
La primera vez que ejecute el comando, si no hay una imagen local llamada hello-world
, Docker Compose la extraerá del repositorio público de Docker Hub:
OutputPulling my-test (hello-world:latest)...latest: Pulling from library/hello-worldc04b14da8d14: Downloading [==================================================] c04b14da8d14: Extracting [==================================================] c04b14da8d14: Extracting [==================================================] c04b14da8d14: Pull completeDigest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9Status: Downloaded newer image for hello-world:latest. . .
Nota: Si te encuentras con un error de permiso relacionado con el socket de Docker, esto significa que te saltaste el Paso 2 de Cómo instalar y usar Docker en Ubuntu 18.04 . Si regresas y completas ese paso, habilitarás los permisos para ejecutar comandos de Docker sin sudo
.
Después de extraer la imagen, docker-compose
crea un contenedor, lo adjunta y ejecuta el programa hello , que a su vez confirma que la instalación parece estar funcionando:
Output. . .Creating helloworld_my-test_1...Attaching to helloworld_my-test_1my-test_1 |my-test_1 | Hello from Docker.my-test_1 | This message shows that your installation appears to be working correctly.my-test_1 |. . .
Luego imprime una explicación de lo que hizo:
Output of docker-compose up. . .1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.. . .
Los contenedores Docker solo se ejecutan mientras el comando esté activo, por lo que una vez hello
que terminan de ejecutarse, el contenedor se detiene. En consecuencia, cuando miras los procesos activos, aparecerán los encabezados de columna, pero el hello-world
contenedor no aparecerá en la lista porque no se está ejecutando.
- docker ps
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Puede ver la información del contenedor, que necesitará en el siguiente paso, utilizando la -a
bandera que muestra todos los contenedores, no solo los activos:
- docker ps -a
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago drunk_payne
Aquí se muestra la información que necesitarás para retirar el contenedor cuando hayas terminado de usarlo.
Paso 3: eliminar la imagen (opcional)
Para evitar utilizar espacio de disco innecesario, eliminará la imagen local. Para ello, deberá eliminar todos los contenedores que hagan referencia a la imagen mediante el docker rm
comando, seguido del ID DE CONTENEDOR o del NOMBRE. A continuación, está utilizando el ID DE CONTENEDOR del docker ps -a
comando que acaba de ejecutar. Asegúrese de sustituir el ID de su contenedor:
- docker rm 06069fd5ca23
Una vez que se hayan eliminado todos los contenedores que hacen referencia a la imagen, puedes eliminar la imagen:
- docker rmi hello-world
Conclusión
Ahora ha instalado Docker Compose, ha probado su instalación ejecutando un ejemplo de Hello World y ha eliminado la imagen de prueba y el contenedor.
Si bien el ejemplo de Hello World confirmó la instalación, la configuración simple no muestra uno de los principales beneficios de Docker Compose: poder poner en funcionamiento y desactivar un grupo de contenedores Docker al mismo tiempo. Para ver el poder de Docker Compose en acción, es posible que desee consultar este ejemplo práctico: Cómo configurar un entorno de prueba de integración continua con Docker y Docker Compose en Ubuntu 16.04 (nota: este artículo es para Ubuntu 16.04 en lugar de 18.04)
Deja una respuesta