Tarea 2.2: Contenedores Docker
En esta tarea vas a trabajar con contenedores Docker: ejecutarlos, gestionar sus imágenes, persistir sus datos, conectarlos en redes y desplegar aplicaciones multicontenedor, primero con docker y después con Docker Compose. Todas las operaciones se realizan desde la línea de comandos.
Cada apartado corresponde a una parte de la unidad: puedes hacerlo y entregarlo en cuanto la hayamos visto en clase.
1. Primeros pasos con Docker
- Instala Docker (paquetes
docker.ioydocker-compose) en una máquina virtual y configúralo para que pueda usarlo un usuario sin privilegios. - Crea un contenedor interactivo desde la imagen
debiane instala el paquetenano. Sal del contenedor y crea un contenedor nuevo desde la misma imagen. - Crea un contenedor en segundo plano con la imagen
httpd:2.4, mapeando el puerto 8080 del host al puerto 80 del contenedor. Comprueba el tamaño que ocupa el contenedor. Copia al contenedor un ficheroindex.htmlcon tu nombre y vuelve a comprobar su tamaño. - Crea un contenedor en segundo plano con la imagen
mariadb, usando las variables de entorno necesarias para su configuración. Conéctate al servidor de base de datos.
2. Almacenamiento y redes
- Crea un volumen Docker llamado
miweby un contenedor desde la imagenphp:8.3-apacheque lo monte en/var/www/html. Copia al contenedor un ficheroindex.htmlcon tu nombre. Borra el contenedor y crea uno nuevo montando el mismo volumen. - Crea un directorio en el host con un fichero
index.htmlcon tu nombre. Crea un contenedor desde la imagenphp:8.3-apacheque monte ese directorio en/var/www/htmlmediante bind mount. Modifica el ficheroindex.htmlen el host. - Crea una red definida por el usuario llamada
red1. Crea un contenedor con la imagenhttpd:2.4conectado a ella y un contenedor interactivo desde la imagendebianconectado también ared1. Desde este último, resuelve el nombre del primer contenedor.
3. Aplicaciones multicontenedor
- Guestbook: la aplicación está formada por la aplicación web (
iesgn/guestbook, puerto 5000) y una base de datos Redis (redis, puerto 6379). Crea una red para la aplicación. Crea el contenedor de Redis con el nombrebd_redis, conectado a esa red y con un volumen para sus datos en/data. Crea el contenedor de Guestbook conectado a la misma red, con la variable de entorno que indica el nombre del servidor Redis y mapeando su puerto al exterior. Escribe algún mensaje. Después, borra el contenedor de Redis y créalo de nuevo. - Temperaturas: la aplicación está formada por dos microservicios,
iesgn/temperaturas_frontend(puerto 3000) yiesgn/temperaturas_backend(puerto 5000). Crea una red para la aplicación. Crea el contenedor de backend con el nombreapi-temp, conectado a esa red y sin mapear su puerto al exterior. Crea el contenedor de frontend conectado a la misma red, con la variable de entornoTEMP_SERVERapuntando al nombre y puerto del backend, y mapeando su puerto al exterior.
4. Docker Compose
- Elimina los contenedores del apartado anterior. Crea un fichero
docker-compose.yamlpara desplegar Guestbook: el contenedor de Redis debe llamarsebd_redisy guardar sus datos en un volumen Docker. Levanta el escenario y comprueba que funciona. - Crea un fichero
docker-compose.yamlpara desplegar Temperaturas: el contenedor de backend debe llamarseapi-tempy solo el frontend debe exponer un puerto al exterior. Levanta el escenario y comprueba que funciona.