Instalar Docker Compose en Ubuntu 18.04
Guía de instalación de Docker Compose en Ubuntu 18.04
Docker es un software para automatizar el despliegue y la gestión de aplicaciones en un entorno de virtualización a nivel de sistema operativo. Permite «empaquetar» una aplicación junto con todo su entorno y sus dependencias en un container que puede trasladarse a cualquier sistema Linux con soporte de cgroups en el kernel, y proporciona un entorno de gestión de containers.

Compose es una herramienta para crear y ejecutar aplicaciones Docker multicontenedor. Con Compose, se utiliza un archivo especial para configurar los servicios de la aplicación.
Las características que hacen efectivo a Compose:
- Múltiples entornos aislados en un solo host
- Protección de los datos de volumen al crear containers
- Solo se recrean los containers modificados
- Transferencia de variables entre entornos
Antes de instalar Docker Compose, asegúrate de que Docker está instalado; consulta este manual para ver los detalles de instalación.
Instalar Docker Compose
Instalaremos Docker Compose desde el repositorio Docker en GitHub. La siguiente sintaxis evita el error de permisos insuficientes que puede aparecer al usar sudo.
Comprueba la versión actual y actualízala si es necesario con el siguiente comando:
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
root@kvmde67-19464:~# sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 638 100 638 0 0 1898 0 --:--:-- --:--:-- --:--:-- 1898
100 16.7M 100 16.7M 0 0 5709k 0 0:00:03 0:00:03 --:--:--:-- 9427k
A continuación ajustamos los permisos:
sudo chmod +x /usr/local/bin/docker-compose
Luego comprobamos que la instalación se ha completado correctamente:
docker-compose --version
Verás una salida similar a esta:
root@kvmde67-19464:~# docker-compose --version
docker-compose version 1.25.5, build 8a1c60f6
Iniciar el container con Docker Compose
El registro de Docker, Docker Hub, contiene una imagen Hello World que se usa para demostraciones y pruebas. Ilustra los parámetros de configuración mínimos necesarios para iniciar un container con Docker Compose: un archivo YAML que hace referencia a una imagen independiente.
Crea un directorio para el archivo YAML:
mkdir hello-world
Entra en él:
cd hello-world
A continuación, crea un archivo YAML en ese directorio:
nano docker-compose.yml
Introduce los siguientes datos en el archivo, guárdalo y cierra el editor de texto:
my-test:
image: hello-world
La primera línea del archivo YAML se utiliza como parte del nombre del container. La segunda línea especifica qué imagen se usa para crear el container. Al ejecutar el comando docker-compose up, buscará la imagen local con el nombre indicado, es decir, hello-world.

A continuación, podemos ver las imágenes del sistema con el comando docker images:
docker images
Si no hay imágenes locales, solo se mostrarán las cabeceras de las columnas:
REPOSITORY TAG IMAGE ID CREATED SIZE
Desde el directorio ~/hello-world, ejecutamos el siguiente comando:
docker-compose up
Tras descargar la imagen, docker-compose crea un container, coloca en él y ejecuta el programa hello:
root@kvmde67-19464:~/hello-world# docker-compose up
Pulling my-test (hello-world:)
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76
Status: Downloaded newer image for hello-world:latest
Creating hello-world_my-test_1 ... done
Attaching to hello-world_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 |
my-test_1 | 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 the
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 it
my-test_1 to your terminal.
my-test_1 |
my-test_1_1 | To try something more ambitious, you can run an Ubuntu container with:
my-test_1 | $ docker run -it ubuntu bash
my-test_1 |
my-test_1 | Share images, automate workflows, and more with a free Docker ID:
my-test_1 | https://hub.docker.com/
my-test_1 |
my-test_1 | For more examples and ideas, visit:
my-test_1 | https://docs.docker.com/get-started/
my-test_1 |
hello-world_my-test_1 exited with code 0
Los containers Docker siguen ejecutándose mientras el comando permanezca activo, por lo que cuando el container hello termina, se detiene. En consecuencia, al consultar los procesos activos aparecerán las cabeceras de columnas, pero el container hello-world no figurará en la lista porque no está en ejecución.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Con el flag -a podemos ver todos los containers, no solo los activos:
docker ps -a
root@kvmde67-19464:~/hello-world# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cfaaf998ecd6 hello-world "/hello" 45 seconds ago Exited (0) 43 seconds ago hello-world_my-test_1