-
Notifications
You must be signed in to change notification settings - Fork 0
Tema 3
###Ejercicio1:Instala LXC en tu versión de Linux favorita. Normalmente la versión en desarrollo, disponible tanto en GitHub como en el sitio web está bastante más avanzada; para evitar problemas sobre todo con las herramientas que vamos a ver más adelante, conviene que te instales la última versión y si es posible una igual o mayor a la 1.0.
Para instalar LXC utilizamos apt-get como se muestra en la siguiente captura:
Para probar LXC paso a instalar un ubuntu en un contenedor lxc con el comando "sudo lxc-create -t ubuntu -n contenedorUbu", la muestra de que se ha creado con éxito es:
###Ejercicio2: Comprobar qué interfaces puente se han creado y explicarlos.
Para ver los interfaces puente que se han creado utilizamos la orden "brctl show", que en mi caso da como salida:
Como muestra la captura se ha creado un puente llamado "lxcbr0" creado por LXC para mi contenedor de Ubuntu, el interfaz se llama veth41L3KB y es un interfaz de ethernet virtual asociado al contenedor de forma que la salida a la red de ese contenedor se hace a traves del mismo usando como "gateway" la maquina anfitriona.
###Ejercicio3: 1. Crear y ejecutar un contenedor basado en Debian. 2. Crear y ejecutar un contenedor basado en otra distribución, tal como Fedora. Nota En general, crear un contenedor basado en tu distribución y otro basado en otra que no sea la tuya. Fedora, al parecer, tiene problemas si estás en Ubuntu 13.04 o superior, así que en tal caso usa cualquier otra distro.
-
Este apartado ha sido resuelto en el ejercicio1 de este tema.
###Ejercicio 4:1. Instalar lxc-webpanel y usarlo para arrancar, parar y visualizar las máquinas virtuales que se tengan instaladas. 2. Desde el panel restringir los recursos que pueden usar: CPU shares, CPUs que se pueden usar (en sistemas multinúcleo) o cantidad de memoria.
- Para instalarlo debemos descargarlo mediante wget , el fichero se encuentra en "http://lxc-webpanel.github.io/tools/install.sh". Con la siguiente orden se descarga y se instala:
"wget http://lxc-webpanel.github.io/tools/install.sh -O -| sudo bash".
Una vez instalado pasamos a probarlo abriendo un navegador y entrando en la url localhost:5000
El interfaz de manejo de los contenedores con lxc web panel es:
Para arrancar un contenedor es tan sencillo como hacer click sobre el nombre del contenedor a arrancar situados en la parte izquierda del interfaz, y en la nueva página que se abre hacer click sobre "start at boot" como muestra la siguiente captura:
- Para restringir los recursos utilizamos la misma pantalla que para arrancar la máquina, en este caso navegamos hacia la parte inferior de la página y vemos como podemos introducir la cantidad de recursos que queremos que utilice dicho contenedor, en mi caso he insertado los siguientes datos:
Por último solo tenemos que pulsar el botón apply de la parte inferior de la pantalla y todas las configuraciones se aplicarán sobre dicho contenedor.
###Ejercicio 5:Comparar las prestaciones de un servidor web en una jaula y el mismo servidor en un contenedor. Usar nginx.
###Ejercicio 6: 1.Instalar juju. 2.Usándolo, instalar MySql en un táper.
Para instalar juju es tan sencillo como seguir los pasos que se nos indican en el material de clase: 1)"sudo add-apt-repository ppa:juju/stable" "sudo apt-get update && sudo apt-get install juju-core"
- Ejecutamos "juju init" y en el fichero que nos crea "environments.yaml" comentamos la linea que pone amazon y añadimos una igual pero con local "default: local".
- Instalamos mongodb-server con "sudo apt-get install mongodb-server"
Una vez tenemos ya instalado lo necesario para crear el taper pasamos a crearlo con juju bootsrap -e local
Esto no produce ninguna salida y si nada más ejecutarlo miráramos juju status pondría "pending" en los estados, pero si esperamos unos 10 o 15 minutos todo estará en "started", como pone a continuación:
###Ejercicio 7: 1.Destruir toda la configuración creada anteriormente. 2. Volver a crear la máquina anterior y añadirle mediawiki y una relación entre ellos. 3. Crear un script en shell para reproducir la configuración usada en las máquinas que hagan falta.
Eliminamos las configuraciones realizadas en el ejercio anterior con las siguientes ordenes, deben de estar en este orden:
- sudo juju destroy-unit mysql/0
- sudo juju destroy-unit mediawiki/0
- sudo juju destroy-machine 1
Con esto ya tendremos eliminado el taper. tambien aunque es mas radical podemo eliminar todo el entorno con "juju destroy-environment"
Para la nueva creación voy a realizar el script del apartado 3 y lo utilizaré para crear el taper de nuevo, éste quedará :
#!/bin/bash
juju init
juju switch local
juju bootstrap
juju deploy mediawiki
juju deploy mysql
juju add-relation mediawiki:db mysql
juju expose mediawiki
Para ejecutar este script debemos ser su. La salida del script es:
Por último tras esperar unos minutos el status pasara a "started":
###Ejercicio 8:Instalar libvirt. Te puede ayudar esta guía para Ubuntu. La instalación es muy sencilla, sólo hay que instalar los paquetes:
y Después:
Con estos paquetes ya podríamos crear, clonar y gestionar máquinas virtuales con los distintos comandos de la biblioteca libvirt.
###Ejercicio 9:Instalar un contenedor usando virt-install.
Lo primero que hacemos es crearnos una carpeta donde queramos "encapsular" nuestra máquina, esto lo hacemos con mkdir. Lo siguiente que tenemos que hacer es tener instalado la herramienta, lo cuál hice en el ejercicio anterior. Y por último antes de proceder a la creación de la máquina es tener una imagen con el S.O. que deseemos instalar. Una vez listo todo el material necesario pasamos a la creación de la máquina, el comando que vamos a utilizar es :
sudo virt-install -n contenedorVirtual -r 1024 --disk path=/home/ubuntu/taper/contenedorVirtual/disco.img,bus=virtio,size=5 -c ubuntu-13.10-desktop-amd64+mac.iso --accelerate --network network=default,model=virtio --connect=qemu:///system --vnc --noautoconsole -v
En el comando anterior se especifican las caracteristicas que tendrá la máquina, como puede ser el tamaño de ram con "-r" la ruta donde se almacenara la máquina con "--disk path=...", el instalador del SO con "-c", etc.
Una vez ejecutado el comando para ver el proceso de instalación utilizamos el virt-viewer, en mi caso : virt-viewer -c qemu:///system contenedorVirtual. Esto nos muestra lo siguiente:
Ya solo tendríamos que continuar la instalación del sistema operativo como si de una máquina normal se tratase.
###Ejercicio 10:Instalar docker.
Para instalar docker hay que seguir una serie de pasos, no es tan sencillo como utilizar apt-get docker simplemente, hay que actualizar los repositorios y ejecutar:
sudo apt-get install linux-image-extra-uname -r
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list" sudo apt-get update sudo apt-get install lxc-docker
sudo docker run -i -t ubuntu /bin/bash
###Ejercicio 11:Instalar a partir de docker una imagen alternativa de Ubuntu y alguna adicional, por ejemplo de CentOS. Buscar e instalar una imagen que incluya MongoDB.
Lo primero que tenemos que hacer es:
Lo que activará el servicio de docker para poder utilizarlo. Una vez hecho esto pasamos a instalar un primer contenedor debian "wheezy" con la orden:
Esta orden comienza la descarga del sistema operativo y la creación de un contenedor con dicho sistema.
Una vez terminado el proceso de descarga y instalación podemos probar a ejecutar comandos sobre el contenedor con:
Ahora para instalar una distribución centos podemos utilizar la orden:
La prueba de que sea a instalado correctamente es:
Para buscar una imagen que incluya MongoDB solo tenemos que ejecutar la orden:
Como se puede ver he filtrado la búsqueda para que el sistema operativo sea ubuntu, ahora paso a instalar esa imagen utilizando docker:
###Ejercicio 12: Crear un usuario propio e instalar nginx en el contenedor creado de esta forma.
Lo primero que hay que hacer es arrancar un shell en el contenedor, para eso ejecutamos:
Tras esto creamos un usuario y comprobamos que se ha creado con:
E instalamos nginx con:
Terminado el proceso de instalación probamos que nginx se ha instalado correctamente:
###Ejercicio 13: Crear a partir del contenedor anterior una imagen persistente con commit.
Para poder guardar el contenedor en una imagen primero tenemos que saber el id de la maquina a guardar, esto lo hacemos con:
Una vez conocemos el id tenemos que pasar a saber cual es el id largo de dicho contenedor, esto lo hacemos con:
Por último conociendo ya el ID largo podemos hacer el commit para crear la imagen:
###Ejercicio 14: Crear una imagen con las herramientas necesarias para DAI sobre un sistema operativo de tu elección.
Voy a utilizar la imagen debian "Wheezy" creada en los ejercicios anteriores, para instalar todos los paquetes necesarios abro un terminal en dicho contenedor como hemos visto en los ejercicios anteriores:
sudo docker run -i -t janos/wheezy /bin/bash
Una vez en el terminal instalo los paquetes necesarios para DAI con la orden apt-get:






























