Práctica 8: Dockerfiles y docker-compose

Creación de imágenes Docker

Hay dos mecanismos fundamentales para crear imágenes Docker propias:

  1. Crear una imagen a partir de un contenedor Docker existente (y ya configurado con los ficheros requeridos) empleando el comando docker commit
  2. Crear una imagen a partir de un Dockerfileque describe sus características mediante el comando docker build

Uso de Dockerfile

Un Dockerfile es un fichero de texto donde se indican los prámetros de una imagen Docker y los comandos a ejecutar sobre una imagen base para crear una nueva imagen.

El comandodocker build construye una nueva imagen (de nombre -t <nombre>) siguiendo las instrucciones del fichero Dockerfile

Ciclo de vida de imágenes Docker

Formato de los ficheros Dockerfile

 

Más detalles en la documentación oficial: https://docs.docker.com/engine/reference/builder/

 

Ejemplo: uso de Dockerfile

Acceder a http://localhost:8080


Desde el anfitrión, acceder a http://localhost:8081/phpinfo.php y http://localhost:8082/phpinfo.php

 

Revisar el elemento Root > FSLayers (1 layer en debian, 3 layers en apache:v1.0, 7 layers en php:v1.0 )

Parar y eliminar contenedores creados

 

Despliegues multicontenedor

La herramienta docker-compose (en versiones recientes docker compose) permite desplegar un conjunto de contenedores a partir de las descripciones aportadas en un fichero docker-compose.yml

Instalación de docker-compose

<pendiente>

Detalles en https://docs.docker.com/compose/install/

 

Importante: Dependiendo de la versión de Docker instalada el comando a usar en esta sección será:

 

Uso de docker-compose

Estructura del fichero docker-compose.yml

Fichero en formato YAML (YAML Ain't Markup Language).

Especificación del fichero docker-compose.yml en https://docs.docker.com/compose/compose-file/

Elementos de primer nivel del objeto YAML:

Nota: En los escenarios creados con docker-compose se crea por defecto una red definida por el usuario nueva donde se conectan los contenedores.

Comandos docker-compose

Ejecutable docker-compose(en versiones recientes docker compose) debe ejecutarse en el mismo directorio donde se ubica el fichero docker-compose.yml con la configuración del escenario (o indicar con -f la ruta del fichero con la configuración del escenario).

 

Ejemplo: despliegue de dos contenedores con volumen compartido

Desde el anfitrión, acceder a

Eliminar escenario

 

Ejercicio entregable

 

Tarea 1: Escenario PHPMyAdmin+MariaDB

Repetir el "Ejemplo 3: Uso conjunto de contenedores y redes (MariaDB + PHPMyAdmin)" de la Práctica 7 usando docker-compose.

Tarea 2: Escenario HAProxy+Wordpress+MariaDB

Repetir el "Ejercicio entregable" de la Práctica 7 (despliegue de HAProxy con dos Wordpress y una BD MariaDB compartida) usando docker-compose.

Entrega

Entrega individual, en MOOVI hasta 23/12/2022