Cómo instalar Docker Compose en Debian 10

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á en desuso. Docker Compose permite a los usuarios organizar los procesos de los contenedores de 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 ayudarlo a administrar aplicaciones multicontenedor en un servidor Debian 10.
Prerrequisitos
Para seguir este artículo, necesitarás:
- Un servidor Debian 10 y un usuario no root con privilegios sudo. Este tutorial de configuración inicial de un servidor con Debian 10 explica cómo hacerlo.
- Docker instalado con las instrucciones del Paso 1 y el Paso 2 de Cómo instalar y usar Docker en Debian 10
Nota: Aunque los requisitos previos brindan instrucciones para instalar Docker en Debian 10, los docker
comandos de este artículo deberían funcionar en otros sistemas operativos siempre que Docker esté instalado.
Paso 1: Instalación de Docker Compose
Aunque puedes instalar Docker Compose desde los repositorios oficiales de Debian, se trata de varias versiones menores atrasadas de la última versión, por lo que en este tutorial lo instalarás desde el repositorio de GitHub de Docker. El comando que sigue 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 encontrarse con un error de "permiso denegado" causado 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.25.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
A continuación configuraremos los permisos:
- sudo chmod +x /usr/local/bin/docker-compose
Luego verificaremos que la instalación fue exitosa verificando la versión:
- docker-compose --version
Esto imprimirá la versión que instalamos:
Outputdocker-compose version 1.25.3, build d4d1b42b
Ahora que tenemos instalado Docker Compose, estamos listos 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. Crearemos esta configuración mínima para ejecutar nuestro hello-world
contenedor.
Primero, crea un directorio para el archivo YAML y cámbiate a él:
- mkdir hello-world
- cd hello-world
Luego crea 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 ejecutamos el docker-compose up
comando, buscará una imagen local con el nombre que especificamos. hello-world
Una vez que lo hayamos hecho, guardaremos y saldremos del archivo.
Puedes mirar manualmente las imágenes en nuestro 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á en el ~/hello-world
directorio, ejecute 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: Pulling from library/hello-world9db2ca6ccae0: Pull completeDigest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdcStatus: Downloaded newer image for hello-world:latest. . .
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 To generate this message, Docker took the following steps:my-test_1 | 1. The Docker client contacted the Docker daemon.my-test_1 | 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.my-test_1 | (amd64)my-test_1 | 3. The Docker daemon created a new container from that image which runs themy-test_1 | executable that produces the output you are currently reading.my-test_1 | 4. The Docker daemon streamed that output to the Docker client, which sent itmy-test_1 | 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 observamos 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, mediante el uso de la -a
bandera. Esto 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 hello-world_my-test_1
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, eliminaremos la imagen local. Para ello, tendremos que eliminar todos los contenedores que hagan referencia a la imagen mediante el docker rm
comando, seguido de o CONTAINER ID
. NAME
En el siguiente ejemplo, utilizamos el CONTAINER ID
del docker ps -a
comando que acabamos de ejecutar. Asegúrese de sustituir el ID de su contenedor:
- docker rm 06069fd5ca23
Una vez eliminados todos los contenedores que hacen referencia a la imagen, podemos eliminar la imagen:
- docker rmi hello-world
Conclusión
Instaló Docker Compose en Debian 10, probó su instalación ejecutando un ejemplo de Hello World y eliminó la imagen de prueba y el contenedor.
Si bien el ejemplo de Hello World confirmó la instalación, esta configuración básica no muestra uno de los principales beneficios de Docker Compose: poder activar y desactivar un grupo de contenedores Docker al mismo tiempo. Para ver cómo usar Docker Compose con más detalle, consulte Cómo instalar WordPress con Docker Compose.
Deja una respuesta