One place for hosting & domains

      Cómo instalar Docker Compose en Ubuntu 18.04


      Introducción

      Docker es una excelente herramienta para automatizar la implementación de aplicaciones de Linux dentro de contenedores de software, pero para aprovechar plenamente su potencial cada componente de una aplicación debería ejecutarse en su propio contenedor individual. En el caso de aplicaciones complejas con muchos componentes, la estrategia de organizar todos los contenedores para que se inicien, se comuniquen y se desconecten juntos puede volverse poco productiva en poco tiempo.

      La comunidad de Docker propuso una solución popular llamada Fig, que permitió el uso de un archivo YAML único para organizar la totalidad de sus contenedores y configuraciones de Docker. La popularidad de esto fue tal que el equipo de Docker decidió crear Docker Compose en base a la fuente de Fig, que ahora es obsoleta. Docker Compose permite que los usuarios organicen de forma más sencilla los procesos de los contenedores de Docker, incluidos los de inicio, cierre y configuración de enlaces y volúmenes dentro de los contenedores.

      En este tutorial, le mostraremos la forma de instalar la versión más reciente de Docker Compose para ayudarlo a administrar aplicaciones en varios contenedores.

      Requisitos previos

      Para seguir los pasos de este artículo, necesitará un servidor Ubuntu 18.04. con lo siguiente:

      Una vez implementado esto, estará listo para seguir adelante.

      Nota: Aunque en los requisitos previos se brindan instrucciones para instalar Docker en Ubuntu 18.04, los comandos de Dockerde este artículo deben funcionar en otros sistemas operativos mientras Docker esté instalado.

      Paso 1: Instalar Docker Compose

      Si bien se puede instalar Docker Compose desde los repositorios oficiales de Ubuntu, la versión está considerablemente atrasada respecto de la más reciente. Por lo tanto, instalaremos Docker Compose desde el repositorio de GitHub. El comando que se muestra a continuación difiere ligeramente respecto del que encontrará en la página Versiones. Al usar el indicador -o para especificar primero el archivo de salida en lugar de redirigirla, esta sintaxis evita que se produzca un error de denegación de permiso al usar sudo.

      Revisaremos la versión actual y, si es necesario, la actualizaremos en el comando que se muestra a continuación:

      • sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

      Luego, configuraremos los permisos:

      • sudo chmod +x /usr/local/bin/docker-compose

      A continuación, comprobaremos que la instalación se haya realizado de forma correcta revisando la versión:

      Con esto se imprimirá la versión que instalamos:

      Output

      docker-compose version 1.21.2, build a133471

      Ahora que instalamos Docker Compose, estamos listos para ejecutar un ejemplo “Hello World”.

      Paso 2: Ejecución de un contenedor con Docker Compose

      En Docker Hub, el registro público de Docker, se incluye una imagen de Hello World para demostración y pruebas. En ella se muestra la configuración mínima requerida para ejecutar un contenedor usando Docker Compose; un archivo YAML que llama a una única imagen:

      Primero, crearemos un directorio para el archivo YAML y nos ubicaremos en él:

      • mkdir hello-world
      • cd hello-world

      Luego, crearemos el archivo YAML:

      Introduzca el siguiente contenido en el archivo, guárdelo y cierre el 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. En la segunda línea se especifica la imagen que se debe usar para crear el contenedor. Cuando ejecutamos el comando docker-compose se buscará una imagen local con el nombre que precisamos: hello-world. Una vez implementado esto, guardaremos el archivo y lo cerraremos.

      Podemos ver de forma manual imágenes de nuestro sistema con el comando docker images:

      Cuando no hay imágenes locales, solo se muestran los encabezados de columnas:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE

      Ahora, aunque aún nos encontremos en el directorio ~/hello-world, ejecutaremos el siguiente comando:

      La primera vez que ejecutemos el comando, si no aparece una imagen local con el nombre hello-world Docker Compose la extraerá del repositorio público de Docker Hub:

      Output

      Pulling my-test (hello-world:latest)... latest: Pulling from library/hello-world c04b14da8d14: Downloading [==================================================>]c04b14da8d14: Extracting [==================================================>]c04b14da8d14: Extracting [==================================================>]c04b14da8d14: Pull complete Digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9 Status: Downloaded newer image for hello-world:latest . . .

      Tras extraer la imagen, docker-compose crea un contenedor, adjunta y ejecuta el programa hello, lo que a su vez confirma que la instalación parece funcionar:

      Output

      . . . Creating helloworld_my-test_1... Attaching to helloworld_my-test_1 my-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 de Docker solo se ejecutan mientras el comando está activo, de modo que cuando hello termina de ejecutarse, el contenedor se detiene. Por consiguiente, cuando examinamos procesos activos los encabezados de columna aparecerán, pero el contenedor de hello-world no figurará por no estar en ejecución.

      Output

      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

      Podemos ver la información del contenedor, la cual necesitaremos en el siguiente paso, usando el indicador -a que muestra todos los contenedores, no solo los activos:

      Output

      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06069fd5ca23 hello-world "/hello" 35 minutes ago Exited (0) 35 minutes ago drunk_payne

      Esto muestra la información que deberemos eliminar del contenedor cuando terminemos con él.

      Paso 3: Eliminación de la imagen (opcional)

      Para evitar ocupar espacio innecesario en el disco, eliminaremos la imagen local. Para hacerlo, tendremos que eliminar todos los contenedores que hagan referencia a la imagen usando el comandodocker rm, seguido del ID DEL CONTENEDOR o del NOMBRE. A continuación, usaremos el ID del CONTENEDOR del comando docker ps -a que acabamos de ejecutar. Asegúrese de sustituir el ID de su contenedor:

      Una vez eliminados todos los contenedores que hagan referencia a la imagen, podemos eliminar la imagen:

      Conclusión

      De esta manera, instalamos Docker Compose, probamos nuestra instalación ejecutando un ejemplo de Hello World y eliminamos la imagen de prueba y el contenedor.

      Aunque el ejemplo de Hello World confirmó nuestra instalación, la configuración sencilla no muestra uno de los principales beneficios de Docker Compose: crear y eliminar un grupo de contenedores de Docker al mismo tiempo. Para ver el poder de Docker Compose en acción, tal vez desee revisar el ejemplo práctico Cómo configurar un entorno de integración continua de prueba con Docker y Docker Compose en Ubuntu 16.04 (nota: este artículo es para Ubuntu 16.04 y no responde a la versión 18.04).



      Source link