Docker Compose

Continuando con el uso de contenedores iniciado en este post https://fioriticarlos.wordpress.com/2018/11/05/contenedores-docker/ me gustaría comentar un poco el uso de esta gran herramienta Docker Compose.

Para utilizarlo simplemente creamos un archivo docker-compose.yml donde definimos los servicios que necesitamos tener corriendo junto con las images en la que están basados. También nos permite hacer redirecciones de puetos, volumes, parámetros para el enviroment y algunas cosas más.

Para utilizar docker-compose nos debemos situar en el directorio de trabajo donde este el docker-compose.yml.

Podemos ver los contenedores que están corriendo con el comando:

docker-compose ps

Iniciar todos los servicios definidos en nuestro archivo .yml (-d lo deja corriendo en segundo plano)

docker-compose up -d

Detener un contenedor concreto (si no se pone el nombre, se detiene todo)

docker-compose stop <nombre>

De igual modo el inicio y reinicio

docker-compose start <nombre>
docker-compose restart <nombre>

En ocasiones es útil forzar el recompilado de un contenedor

docker-compose up --build -d <nombre>

Para conocer el estado de lo que esta sucediendo en el contenedor es utilizar los logs

docker-compose logs -f --tail=100 <nombre>

Para ejecutar comandos dentro del contenedor

docker-compose exec [contenedor] [comando]

Por ejemplo para conocer la versión de PHP dentro del contenedor podemos hacer:

docker-compose exec php php -v

Obtendremos una salida similar a la siguiente:

PHP 7.3.29-1+ubuntu20.04.1+deb.sury.org+1 (cli) (built: Jul  1 2021 16:08:24) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.29, Copyright (c) 1998-2018 Zend Technologies     with Zend OPcache v7.3.29-1+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

Otro ejemplo bastante habitual es acceder a la consola de comandos del contenedro, podemos hacerlo del siguiente modo:

docker-compose exec mysql bash

Nos mostrará una consola dentro del contenedor, en este caso mysql, donde podemos ejecutar comandos como en cualquier linux. Podemos salir con exit.

Podemos ver un listado con todos los contenedores que tenemos en el sistema haciendo:

docker container ls -a

Otro comando que pude resultar muy útil es docker rm que nos permite eliminar uno o más contenedores del siguiente modo. Por ejemplo para eliminar los contenedores bdc21c36899e, a95816a12a71 y 381cbee91d15 haremos:

docker rm bdc21c36899e a95816a12a71 381cbee91d15

Pronto más posts sobre contenedores.

Deja un comentario