Práctica 2 de la asignatura de Cloud Computing en la que se realiza manejo de contenedores.
|
|
%!s(int64=9) %!d(string=hai) anos | |
|---|---|---|
| LICENSE | %!s(int64=9) %!d(string=hai) anos | |
| README.md | %!s(int64=9) %!d(string=hai) anos | |
| index.php | %!s(int64=9) %!d(string=hai) anos |
En este documento se van a detallar las actividades que se han realizado paso por paso durante la realización de las tareas descritas en el guión de la práctica 2.
Los contenedores se basan en una simplificación de las máquinas virtuales realizada para minimizar el coste asociado a virtualizar una máquina o arquitectura completa es por ello que se ha desarrollado docker, el cual es un software para la virtualización ligera de software y esto se resume en virtualización mucho más rápida y eficiente y a su vez aislada del sistema anfitrión en los aspectos más relevantes, para desplegar contenedores solo es necesario conocer el nombre de la imagen en Docker Hub y llamar al comando docker pull y docker run, con ello habremos descargado y tras ello lanzado nuestro contenedor docker en la máquina anfitrión, vamos a pasar ahora a explicar los detalles.
Vamos a crear ahora nuestros contenedores docker con las herramientas software que vamos a desplegar, en nuestro caso concreto vamos a instanciar un contenedor con nginx y otro con mongoDB como hicimos en la anterior práctica vamos a usar la misma aplicación para probar que la funcionalidad es exactamente la misma, pasamos a los comandos:
docker pull ubuntu:14.04
docker run -d -p 14035:80 -p 14036:443 --restart=always --name NginxOkynos ubuntu:14.04
docker pull mvertes/alpine-mongo
docker run -d -p 14037:27017 --restart=always --name MongoOkynos mvertes/alpine-mongo
con esto ya tendremos lanzados y funcionando dos contenedores uno con Nginx y otro con mongoDB, podemos consultar el estado de los contenedores por si algo ha fallado con el comando:
docker ps
Que nos mostrará la lista de contenedores lanzados o que se estén reiniciando ya que al poner restart always el contenedor si falla se reiniciará constantemente. Ahora debemos provisionar el contenedor de nginx con la aplicación que realizamos en la práctica anterior, para ello ejecutamos el código:
docker exec -it CONTAINER_ID /bin/bash
esto nos dará acceso al contenedor que se está ejecutando y así poder provisionarlo, ejecutamos lo siguiente dentro de contenedor nginx:
apt-get update
apt-get install php5-common php5-cli php5-fpm php5-dev php5-cli php-pear
apt-get install nginx wget
pecl install mongodb
wget --no-check-certificate https://makefile.es:3000/okynos/Practica2CC2/raw/master/index.php
vi index.php
vi /etc/nginx/sites-available/default
vi /etc/php5/fpm/pool.d/www.conf
vi /etc/php5/fpm/php.ini
exit
Con el vi modificamos la linea de acceso a la base de datos cambiando docker.ugr.es:15035 por hadoop.ugr.es:14037 que es el puerto que le asignamos a nustro contenedor con mongo. Tambien editamos el fichero de congifuración de nginx para añadir la lectura de phpy el fichero pho.ini y le añadimos extension=mongo.so. Con esto ya tendríamos configurada la parte de nginx en la que se muestra nestro index con acceso a la base de datos pero la base de datos todavia no se ha configurado vamos a pasar a ello Nos conectamos a nuestro contenedor o directamente desde una aplicación externa como compass a nuestra base de datos mongo y replicamos la base de datos que teníamos en la practica anterior y podemos observar como nuestro servidor http se conecta a nuestro servicio mongodb.