<commit_before># <NAME>
# Tema

##Ejercicio 1:
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.

Hemos usado Linux Debian para ésta prácatica.
Hemos instalado la versión que viene por defecto en la distribución, con la orden **sudo apt-get install lxc**
![Ejercicio1](http://i770.photobucket.com/albums/xx346/BkY_1234/Faculty/captura1_zpsydyxzo0l.jpg)

Ahora comprobamos que la compatibilidad es correcta:
![Ejecicio1_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura1_2_zpsmby6otx7.jpg)


##Ejercicio 2:
Comprobar qué interfaces puente se han creado y explicarlos.

Para crear el contenedor, instalamos la caja my-container, hemos usado la orden **sudo lxc-create -t ubuntu -n my-container** .

samu@samu: ~/IV-2015-16 on master
> sudo lxc-create -t ubuntu -n my-container
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/ubuntu/rootfs-jessie-amd64 ...
Downloading ubuntu minimal ...
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id <KEY>)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
```
Tras instalarse (tarda un buen rato) nos proporciona los datos de usuario y contraseña, que por defecto son 'ubuntu' y 'ubuntu':
![Ejercicio2_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura2_1_zpsit8l6phb.jpg)

Ahora, con la siguiente orden arrancamos la caja:
```
sudo lxc-start -n my-container
```
Arrancamos el contenedor con la orden **sudo lxc start -n my-container**.
Ahora, introducimos el usuario y contraseña que viene por defecto:
![Ejercicio2_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura2_2_zpsvjxqlz5c.jpg)

Ahora, en otro terminal, escribimos la orden **ifconfig -a** para ver las interfaces que se han creado:
![Ejercicio2_3](http://i770.photobucket.com/albums/xx346/BkY_1234/captura2_3_zpskjvek4gz.jpg)
Como podemos observar, se han creado las interfaces **lxcbr0** para que el contenedor tenga acceso a internet y **vethLSKID7**
que permite la comunicación entre los diferentes contenedores.

##Ejercicio 3:
1.Crear y ejecutar un contenedor basado en Debian.

Hacemos los mismos pasos que en el ejercicio anterior, cambiando el template "ubuntu" por "debian".
Por tanto, el comando a escribir es:
**sudo lxc-create -t debian -n my-container-debian**
Tras otro buen rato, ya podemos acceder a él como en el ejercicio anterior.
![Ejercicio3_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura3_1_zpsageccyre.jpg)

Ahora el usuario y contraseña es '<PASSWORD>'. Pero al abrir el contenedor con **sudo lxc start -n my-container-debian** obtengo
el siguiente error:
![Ejercicio3_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura3_2_zpsljkhton5.jpg)

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. Por ejemplo, Óscar Zafra ha logrado instalar
Gentoo usando un script descargado desde su sitio, como indica en este comentario en el issue.

Vamos a instalar un contenedor basado en Cirros. Para ello, seguimos los mismos pasos que en los dos casos
anteriores. Para crearlo , escribimos en la consola:
```
lxc-create -t cirros -n cirros-container
```
Tras la instalación, podemos hacer login con los datos que se indican por defecto, como podemos ver en la siguiente imagen:
![Ejercicio3_3](http://i770.photobucket.com/albums/xx346/BkY_1234/captura3_3_zpsjlriqg4d.jpg)


##Ejercicio 4:
Instalar lxc-webpanel y usarlo para arrancar, parar y visualizar las máquinas virtuales que se tengan instaladas.

Para instalarlo he usado la siguiente orden:
```
wget https://lxc-webpanel.github.io/tools/install.sh -O - | bash
```

Ahora, abrimos el explorador y escribimos la dirección "localhost:5000" para abrir el panel de control de lxc. Introduciremos como usuario y contraseña: "admin" y "<PASSWORD>", que son los valores por defecto, y nos aparecerá el siguiente panel:
![Ejercicio4_1](http://i770.photobucket.com/albums/xx346/BkY_1234/ejercicio4_1_zps32qxyjwz.jpg)

Podemos ver los contenedores que tenemos creados, sus características y modificar valores de parámetros:
![Ejercicio4_2](http://i770.photobucket.com/albums/xx346/BkY_1234/ejercicio4_3_zpslazo79ca.jpg)

Con éste panel, podemos modificar el uso de los recursos que pueden usar el contenedor, tales como los cores, CPU shares, límite de cantidad de memoria, memoria + swap limit, etc.

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.
Elegimos el contenedor de ubuntu y restringimos los siguientes datos:
![Ejercicio4_3](http://i770.photobucket.com/albums/xx346/BkY_1234/ejercicio4_2_zpskiclyqfx.jpg)


##Ejercicio 6:
Instalar docker.

He seguido el tutorial de la siguiente página para instalar Docker en Debian:
https://docs.docker.com/engine/installation/debian/

Tras instalarlo, he ejecutado el servicio y he realizado un "hello world":
![ejercicio_6_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura6_1su_zps7ss6tmjf.jpg)

##Ejercicio 7:
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.

He instalado primero una imagen de ubuntu a partir con docker con la orden:
 ```sudo docker pull ubuntu```

Ahora, comprobamos  las imágenes creadas con ```sudo docker ps -a``` y  arrancar el contenedor escribimos ```sudo docker run -i -t ubuntu /bin/bash```:
![ej7_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura7_1_zpswvdbcsou.jpg)


Y ahora hacemos el mismo procedimiento pero para centos. Escribimos ```sudo docker pull centos```:
Comprobamos  la imágen con ```sudo docker ps -a```
Y finalmente lo arrancamos con ```sudo docker run -i -t centos```:
![ej7_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura7_2_zps1hitghkn.jpg)


Para parar un docker, podemos ejecutar:
 ```sudo docker ps -a=false
sudo docker stop id```

Y si queremos borrarlo:
 ```sudo docker rmi -f id```

Ahora, vamos a instalar una imagen que incluya MongoDB:

Seguimos el mismo procedimiento usado previamente:
 ```sudo docker pull mongo
sudo docker run -i -t mongo
sudo docker ps -a<commit_msg>Arreglando comillas de inserción mal colocodas<commit_after># <NAME>
# Tema

##Ejercicio 1:
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.

Hemos usado Linux Debian para ésta prácatica.
Hemos instalado la versión que viene por defecto en la distribución, con la orden **sudo apt-get install lxc**
![Ejercicio1](http://i770.photobucket.com/albums/xx346/BkY_1234/Faculty/captura1_zpsydyxzo0l.jpg)

Ahora comprobamos que la compatibilidad es correcta:
![Ejecicio1_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura1_2_zpsmby6otx7.jpg)


##Ejercicio 2:
Comprobar qué interfaces puente se han creado y explicarlos.

Para crear el contenedor, instalamos la caja my-container, hemos usado la orden **sudo lxc-create -t ubuntu -n my-container** .

samu@samu: ~/IV-2015-16 on master
> sudo lxc-create -t ubuntu -n my-container
debootstrap is /usr/sbin/debootstrap
Checking cache download in /var/cache/lxc/ubuntu/rootfs-jessie-amd64 ...
Downloading ubuntu minimal ...
I: Retrieving Release
I: Retrieving Release.gpg
I: Checking Release signature
I: Valid Release signature (key id <KEY>)
I: Retrieving Packages
I: Validating Packages
I: Resolving dependencies of required packages...
I: Resolving dependencies of base packages...
```
Tras instalarse (tarda un buen rato) nos proporciona los datos de usuario y contraseña, que por defecto son 'ubuntu' y 'ubuntu':
![Ejercicio2_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura2_1_zpsit8l6phb.jpg)

Ahora, con la siguiente orden arrancamos la caja:
```
sudo lxc-start -n my-container
```
Arrancamos el contenedor con la orden **sudo lxc start -n my-container**.
Ahora, introducimos el usuario y contraseña que viene por defecto:
![Ejercicio2_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura2_2_zpsvjxqlz5c.jpg)

Ahora, en otro terminal, escribimos la orden **ifconfig -a** para ver las interfaces que se han creado:
![Ejercicio2_3](http://i770.photobucket.com/albums/xx346/BkY_1234/captura2_3_zpskjvek4gz.jpg)
Como podemos observar, se han creado las interfaces **lxcbr0** para que el contenedor tenga acceso a internet y **vethLSKID7**
que permite la comunicación entre los diferentes contenedores.

##Ejercicio 3:
1.Crear y ejecutar un contenedor basado en Debian.

Hacemos los mismos pasos que en el ejercicio anterior, cambiando el template "ubuntu" por "debian".
Por tanto, el comando a escribir es:
**sudo lxc-create -t debian -n my-container-debian**
Tras otro buen rato, ya podemos acceder a él como en el ejercicio anterior.
![Ejercicio3_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura3_1_zpsageccyre.jpg)

Ahora el usuario y contraseña es 'root'. Pero al abrir el contenedor con **sudo lxc start -n my-container-debian** obtengo
el siguiente error:
![Ejercicio3_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura3_2_zpsljkhton5.jpg)

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. Por ejemplo, <NAME> ha logrado instalar
Gentoo usando un script descargado desde su sitio, como indica en este comentario en el issue.

Vamos a instalar un contenedor basado en Cirros. Para ello, seguimos los mismos pasos que en los dos casos
anteriores. Para crearlo , escribimos en la consola:
```
lxc-create -t cirros -n cirros-container
```
Tras la instalación, podemos hacer login con los datos que se indican por defecto, como podemos ver en la siguiente imagen:
![Ejercicio3_3](http://i770.photobucket.com/albums/xx346/BkY_1234/captura3_3_zpsjlriqg4d.jpg)


##Ejercicio 4:
Instalar lxc-webpanel y usarlo para arrancar, parar y visualizar las máquinas virtuales que se tengan instaladas.

Para instalarlo he usado la siguiente orden:
```
wget https://lxc-webpanel.github.io/tools/install.sh -O - | bash
```

Ahora, abrimos el explorador y escribimos la dirección "localhost:5000" para abrir el panel de control de lxc. Introduciremos como usuario y contraseña: "admin" y "<PASSWORD>", que son los valores por defecto, y nos aparecerá el siguiente panel:
![Ejercicio4_1](http://i770.photobucket.com/albums/xx346/BkY_1234/ejercicio4_1_zps32qxyjwz.jpg)

Podemos ver los contenedores que tenemos creados, sus características y modificar valores de parámetros:
![Ejercicio4_2](http://i770.photobucket.com/albums/xx346/BkY_1234/ejercicio4_3_zpslazo79ca.jpg)

Con éste panel, podemos modificar el uso de los recursos que pueden usar el contenedor, tales como los cores, CPU shares, límite de cantidad de memoria, memoria + swap limit, etc.

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.
Elegimos el contenedor de ubuntu y restringimos los siguientes datos:
![Ejercicio4_3](http://i770.photobucket.com/albums/xx346/BkY_1234/ejercicio4_2_zpskiclyqfx.jpg)


##Ejercicio 6:
Instalar docker.

He seguido el tutorial de la siguiente página para instalar Docker en Debian:
https://docs.docker.com/engine/installation/debian/

Tras instalarlo, he ejecutado el servicio y he realizado un "hello world":
![ejercicio_6_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura6_1su_zps7ss6tmjf.jpg)

##Ejercicio 7:
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.

He instalado primero una imagen de ubuntu a partir con docker con la orden:
 ```sudo docker pull ubuntu```

Ahora, comprobamos  las imágenes creadas con ```sudo docker ps -a``` y  arrancar el contenedor escribimos ```sudo docker run -i -t ubuntu /bin/bash```:
![ej7_1](http://i770.photobucket.com/albums/xx346/BkY_1234/captura7_1_zpswvdbcsou.jpg)


Y ahora hacemos el mismo procedimiento pero para centos. Escribimos ```sudo docker pull centos```:
Comprobamos  la imágen con ```sudo docker ps -a```
Y finalmente lo arrancamos con ```sudo docker run -i -t centos```:
![ej7_2](http://i770.photobucket.com/albums/xx346/BkY_1234/captura7_2_zps1hitghkn.jpg)


Para parar un docker, podemos ejecutar:
 ```sudo docker ps -a=false
sudo docker stop id```

Y si queremos borrarlo:
 ```sudo docker rmi -f id```

Ahora, vamos a instalar una imagen que incluya MongoDB:

Seguimos el mismo procedimiento usado previamente:
 ```
 sudo docker pull mongo
sudo docker run -i -t mongo
sudo docker ps -a
{'fraction_non_alphanumeric': 0.0846780162842339, 'fraction_numerical': 0.03538119911176906, 'mean_word_length': 5.018262806236081, 'pattern_counts': {'":': 2, '<': 11, '<?xml version=': 0, '>': 13, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3306741', 'n_tokens_mistral': 5338, 'n_tokens_neox': 4905, 'n_words': 1641}