43
 IES Gran Capitán Departamento de Informática Ciclo Formativo de Grado Superior de Administración de Sistemas Informáticos Módulo de Proyecto Integrado José Povedano Francisco Portavella y Emanuel Adrian Gabriel Stasiuc - 2  A.S.I.R. Proyecto: Proxy inverso Máquinas Virtuales y Docker Curso: 2014/2015 IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710 http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Proxy Inverso, Mvs y Docker

Embed Size (px)

Citation preview

Page 1: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 1/43

IES Gran Capitán

Departamento de Informática

Ciclo Formativo de Grado Superior deAdministración de Sistemas Informáticos

Módulo de Proyecto Integrado

José Povedano Francisco Portavella y Emanuel

Adrian Gabriel Stasiuc - 2 A.S.I.R.

Proyecto: Proxy inverso Máquinas Virtuales y

Docker

Curso: 2014/2015

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 2: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 2/43

Índice

1.- Introducción

2.- Objetivos y requisitos del proyecto

3.- Estudio previo

3.1.- Estado actual

3.2.- Estudio de soluciones existentes

Encapsulamiento de proyectos integrados

Máquina Virtual Proxmox

Contenedor Proxmox

Contenedor Docker

Software de proxy inverso

NGinx

4.- Plan de trabajo

5.- Diseño 5.1.- Diseño general

5.2.- Diseño detallado

6.- Implantación

7.1.- Herramientas hardware

7.2.- Herramientas software

7.3.- Personal

7.4.- Presupuesto

8.- Conclusiones

8.1.- Grado de consecución de objetivos

8.2.- Problemas encontrados

8.3.- Futuras mejoras

9.- Referencias / bibliografía

10.- Anexos

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 3: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 3/43

1.- Introducción

Los administradores de Sistemas Informáticos tenemos como tarea prioritaria el mantenimiento de Hardware/Software de los Sistemas informáticos. Tenemos

presente la responsabilidad de implementar, configurar, mantener, monitorizar y

asegurar el correcto funcionamiento de los sistemas informáticos.

Una de nuestras necesidades más urgentes es el mantenimiento de los Proyectos

Integrados que se montan cada año por los diferentes alumnos del centro.

Para poder asegurar un correcto funcionamiento de los diferentes sistemas

informáticos/Servidores en los que se encuentran montados los Proyectos, tenemos

que implementar un sistema que facilite el mantenimiento y la seguridad de todos

los Proyectos Integrados que tenemos implementados.

Nuestro proyecto consistirá en agrupar los presentes y futuros Proyectos Integrados

en Contenedores Proxmox y Contenedores Docker y la implementación de un

Proxy Inverso que tenga la función de redireccionar mediante direcciones

“amigables” el acceso a los Proyectos Integrados que hay en diferentes máquinas.

2.- Objetivos y requisitos del proyecto

Gestión de Proyectos Integrados en servidores del departamento mediante el

encapsulamiento en entidades independientes

Estudio de Máquinas Virtuales bajo Proxmox como entidades

independientes

Estudio de Contenedores bajo Proxmox como entidades independientes

Estudio de Contenedores Docker bajo Máquinas/Contenedores

Proxmox como entidades independientes

Implementación de los tres tipos de entidades independientes

Acceso a los proyectos integrados desde tanto el exterior como interior

mediante “URLs” amigables

Configuración de servicio DNS exterior

Configuración de servicio DNS del departamento

Implementación de un proxy inverso en los servidores del

departamento

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 4: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 4/43

3.- Estudio previo

3.1. Estado actual

Como se puede observar en el esquema, esta sería la topología de red del centro, donde el router principal de fibra óptica estaría en conserjería.

Desde conserjería la red iría cableada por ethernet hasta el DACE, donde están los

servidores de Calisto y Ganímedes.

No hemos hablado del servidor Ganímedes, pero para hacernos con una idea global

es un servidor de contenidos y recursos compartidos en red.

En el servidor Calisto, estará configurado en una MV nuestro proxy inverso.

Posteriormente desde el DACE, la red va hacia el armario de comunicaciones del

departamento donde estará alojado el servidor Júpiter que contendrá todos los

proyectos.

Actualmente, algunos Proyectos Integrados están implementados en Máquinas

Virtuales en el Servidor Júpiter y la mayoría de los Proyectos se encuentran en un

Servidor VPS que actualmente está en medio de una migración desarrollada por dos

de nuestros compañeros.

El Servidor VPS actual tiene una serie de limitaciones o desventajas; por una serie

de dependencias extrañas llega un momento en el cuál ya no se puede actualizar el

Sistema.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 5: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 5/43

Esta máquina (Titán) ofrece los siguientes servicios:

Servidor proxy Squid: servidor proxy y dominio cache para páginas web.

Portal Cautivo: De forma que los usuarios necesiten autenticarse con usuario y

contraseña para poder conectarse a la red, estas sesiones duran un tiempo, al

acabarse ese tiempo se debe de volver a autenticar.

Sarg (Squid Analysis Report Generator): permite generar reportes sobre la

actividad de todos los usuarios dentro de la red de área local.

DNS Caché: un respaldo o registro de las direcciones IP de las páginas web

visitadas, estas son almacenadas en el ordenador, a fin de realizar la traducción mas

rápida se usa este registro interno.

DHCP: es un protocolo de red que permite a los clientes de una red IP obtener sus

parámetros de configuración automáticamente.

La red está dividida en VLANs de las cuales en la VLAN 12 se encuentra ubicado un servidor de máquinas virtuales (Jupiter), que va conectado a través de un switch

a Titán, además de un punto de acceso el cual provee de internet a la red.

3.2. Estudio de soluciones existentes

Encapsulamiento de proyectos integrados

Máquina Virtual Proxmox

Proxmox es una distribución basada en Debian, la cual puede ser instalada y

utilizada en poco tiempo. Es una solución completa de virtualización de servidores

basada en sistemas de código abierto. Permite la virtualización tanto sobre KVM

como contenedores y gestiona máquinas virtuales, almacenamiento, redes

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 6: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 6/43

virtualizadas y clústeres HA.

La ventaja de Proxmox es que ya resuelve el manejo de máquinas virtuales a través

de su interfaz web, lo que lo hace muy sencillo de administrar. Además hanincorporado soporte para SPICE, Por lo que se puede acceder a las máquinas

virtuales desde cualquier otra PC simplemente utilizando un cliente SPICE.

Proxmox ofrece también una cantidad de “plantillas” de máquinas virtuales para

descargar desde la propia interfaz de administración.

Hemos decidido implementar Proxmox y descartar como vía alternativa la

implementación de VmWare por el tema del presupuesto y la falta de Servidores

necesarios para poder implementar correctamente VmWare.

Proxmox no deja de ser una alternativa libre a VmWare que puede resultar

determinante a la hora de la implementación de un sistema u otro.

Ventajas

Aprovechamiento de recursos, reparto equitativo de procesador y memoria.

Disminución del consumo eléctrico, un servidor virtual consume menos que

varios físicos.

Flexibilidad para testing.

Seguridad para producción.

Backups y snapshots en caliente.

Restauración prácticamente inmediata.

Fácil de administrar.

Clustering.

Alta disponibilidad.

Migración sencilla.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 7: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 7/43

Inconvenientes

Mayor probabilidad de fallos fatales, al ser un único equipo, si el disco falla o

la energía se pierde. La posibilidad de implementarlo en VmWare como vía alternativa.

Contenedor Proxmox

OpenVZ es la virtualización basada en contenedores para Linux. OpenVZ crea

múltiples contenedores seguros y aislados de Linux en un único servidor físico

permitiendo una mejor utilización de los servidores y la garantía de que las

aplicaciones no entren en conflicto.

Ventajas

Cada Entorno virtual trabaja independientemente.

La administración de los recursos del servidor físico en los entornos virtuales

de openvz se pueden modificar sin necesidad de reiniciar la máquina.

Poder migrar entornos virtuales en caliente sin necesidad de apagar el

servidor.

La escalabilidad en Openvz es una habilidad para poder manejar el

crecimiento continuo del servidor físico sin perder calidad en los entornos

virtuales. Openvz pude trabajar con cientos de entornos virtuales en el servidor físico

pero teniendo en cuenta las especificaciones del hardware.

Administración masiva de todos los entornos virtuales.

El ahorro de tiempo a la hora de hacer los procesos de instalación de la

virtualización.

Se puede trabajar en diferentes escenarios: seguridad, consolidación de

servidores, hosting,educativo, desarrollo y prueba.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 8: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 8/43

Inconvenientes

Solamente puede trabajar con el sistema operativo Linux, pero se pueden

instalar diferentes distribuciones de GNU/Linux; en cuanto a contenedores

OpenVZ (contenedores proxmox) solo se pueden implementar distribuciones

linux cierto, pero eso no quita que proxmox si pueda trabajar con windows en

modo KVM, pero no es aconsejable ya que si implementamos tanto windows

como linux el rendimiento de proxmox baja)

Los entornos virtuales por defecto no tienen entorno gráfico, pero se podría

llegar a implementar si así se desea posteriormente aunque no es lo habitual

ya que los contenedores Proxmox destacan por su ligereza y es algo complejo

(KDE,LXDE,Fluxbox,etc..).

Contenedor Docker

Docker nos permite crear contenedores, lo cual son aplicaciones empaquetadas

autosuficientes, muy livianas que son capaces de funcionar en prácticamente

cualquier ambiente, ya que tiene su propio sistema de archivos, librerías, terminal,

etc. Nos permite empaquetar para más tarde desplegar en cualquier sistema

operativo Linux.

Ventajas

Una de las grandes ventajas de Docker es la confianza que enormes empresas

y empresarios están depositando en ésta nueva tecnología y están invirtiendomucho dinero y esfuerzo en el desarrollo de Docker.

Portabilidad porque el contenedor se puede desplegar en cualquier sistema

que soporte Docker.

Ligereza y autosuficiencia porque únicamente empaquetamos la parte del

sistema operativo, aplicaciones y las librerías necesarias para su

funcionamiento.

Ubuntu, en una de sus próximas versiones, vendrá preparado para desplegar

Docker sin ningún problema.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 9: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 9/43

Inconvenientes

No es multiplataforma, solo se puede implementar en Linux.

Si deseamos implementar Docker en Windows necesitamos ejecutar una

máquina Virtual Ligera y mediante unas herramientas podemos administrarlo.

No soporta sistemas x86, al menos hasta la fecha

Una de las ' desventajas' que puede tener un contenedor docker, es que, al no

ser un sistema en si, no se puede configurar como se haría en un sistema

operativo basado en linux, toda la configuración del contenedor docker reside

en un único archivo llamado dockerfile.

Software de proxy inverso

NGinx

Nginx es un servidor web y proxy inverso multiplataforma de alto rendimiento. Es

Open Source licenciado bajo la ‘Licencia BSD simplificada’. Es más ligero que

otros servidores web y además se puede usar como proxy inverso para contenido

web o para protocolos de correo electrónico como IMAP o POP3. Es multiplataforma, por lo que corre en sistemas tipo Unix y Windows.

Ventajas

Multiplataforma, se puede instalar en diferentes sistemas Unix y también en

Windows.

Ligero, consume menos recursos para realizar la misma función que otros

servidores web.

Alto rendimiento, responde más rápido comparado con otros servidores web.

Proxy inverso, se puede usar como proxy inverso para cachear el contenido

de nuestras webs.

Proxy Inverso implementado en Contenedor Proxmox presenta mayor

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 10: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 10/43

rendimiento que en una máquina Virtual.

Inconvenientes

Módulos dinámicos: No se pueden instalar nuevos módulos en caliente sin

tener que compilar Nginx con el módulo deseado y volver a instalarlo.

Documentación: No existe mucha información para resolver según qué

problemas.

Apache

El servidor Apache HTTP , también llamado Apache, es un servidor web HTTP de

código abierto para la creación de páginas y servicios web. Es un servidor

multiplataforma, gratuito, muy robusto y que destaca por su seguridad y

rendimiento.

Ventajas

Multiplataforma, se puede instalar tanto en sistemas Unix como Windows.

Documentación y soporte amplio.

Gran conjunto de funcionalidades.

Código abierto.

Altamente configurable.

Inconvenientes

Incluye formatos de configuración no estándar. Si ciertas reglas no están bien

configuradas, es posible engañar a los servidores para que realicen solicitudes

de acceso no autorizadas a los recursos internos (falta de seguridad).

No cuenta con una buena administración.

Falta integración.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 11: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 11/43

3.3. Solución Elegida

A continuación analizamos las distintas soluciones dependiendo de la

implementación del hardware:

SOLUCIÓN ÓPTIMA

POSIBLE SOLUCIÓN CON INCONVENIENTES

NO SE PUEDE IMPLEMENTAR

MV proxmox Contenedor

proxmox

Contenedor

Docker

Proyectos en sistema

GNU/Linux

Proyectos en sistema

Windows

Proxy Inverso

Gestor de Contenidos

Docker

Explicaremos lo que hemos querido reflejar con esta tabla.

Proyectos en sistema GNU/Linux

En primer lugar, los proyectos que funcionan bajo sistemas GNU/Linux podrían ser

implementados en cualquiera de las soluciones que proponemos:

En Máquinas Virtuales de Proxmox: los proyectos funcionarían a la perfección,

pero no estarían optimizados con respecto al espacio en Disco Duro.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 12: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 12/43

Crear una máquina virtual completa supondría un gran gasto de espacio en el disco

duro.

En contenedores Proxmox: lo que disminuiría considerablemente el espacio usado

por máquinas virtuales en el Disco Duro.

En Contenedores Docker: finalmente, la mejor solución que planteamos es la

creación de contenedores docker, ya que reducen el tamaño con respecto a los

contenedores proxmox y se podrían incluir varios en una misma máquina virtual

con la posibilidad de lanzarlos independientemente.

Proyectos en sistema Windows

Cuando hablamos de proyectos que trabajan bajo sistemas Windows no nos queda

otra solución que la de implementarlos en máquinas virtuales dentro de Proxmox ya

que no existen contenedores de Windows, y Docker no soporta este sistema

operativo.

La solución elegida es montar los proyectos en distintos contenedores Docker

y máquinas virtuales en Proxmox (Servidor Júpiter).

Contenedores Docker para la implementación de proyectos sobre sistemas

operativos GNU/Linux.

A su vez para la utilización de Docker creemos que es mejor utilizar

máquinas virtuales proxmox (KVM) en lugar de contenedores proxmox

(OpenVZ) ya que a más niveles de virtualización peor rendimiento.

Máquinas virtuales Proxmox (KVM) para la implementación de proyectos

sobre Windows.

Comentar que docker funciona un poco distinto a Openvz; puedes tener los

contenedores y puedes tener distintas versiones de éstos (se hacen copias

incrementales).

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 13: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 13/43

Puedes tener un contenedor con varios programas ya preinstalados y a partir

de ahí tener una base para hacer las configuraciones específicas de cada uno,

incluso puedes tener varias versiones del mismo por si quieres realizar

cambios.

Así que la horrorosa tarea de crear contenedores que había en openvz se

soluciona y es mucho más versátil.

Proxy Inverso: en una máquina virtual independiente dentro de Proxmox

(Servidor Calisto). Hemos decidido implementarlo en Calisto para no

redireccionar el tráfico innecesario de la Red.

Se puede instalar el Proxy Inverso en Contenedor de Proxmox para una

mejora de Rendimiento, pero para que pueda funcionar correctamente,

tenemos que configurar un fichero en el contenedor de Proxmox para su

correcto funcionamiento. No es complicado, pero no deja de ser una

configuración adicional.

Finalmente hemos decidido implementarlo en una Máquina Virtual dentro de

Proxmox.

Gestor de Contenedores Docker: la mejor solución es implementarlo en

Máquina Virtual Linux dentro de Proxmox ya que al tratarse de una

herramienta que gestiona contenedores, no es conveniente implementarlo en

contenedores Proxmox, ni mucho menos en Contenedores Docker.

Ventajas

Hemos decidido implementar el Proxy Inverso en el Servidor Calisto ya que a nivel

Físico se nota una mejoría de rendimiento en la redirección y se evitan tráficos de

redireccionamientos innecesarios.

El Proxy Inverso no tiene porqué ir en la misma máquina que los contenedores

Docker ya que los contenedores nos interesa montarlos en un servidor con más

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 14: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 14/43

espacio en Disco Duro y menor carga de CPU. Mientras que el Proxy Inverso se

puede implementar con unos recursos mínimos para su correcto funcionamiento.

Consideramos que es muy importante por seguridad tener en cuenta el aislamiento

entre la red pública y la red privada.

Inconvenientes

Debido al uso de máquinas virtuales necesitamos más espacio en disco duro y

puede producir limitaciones en el Rendimiento general del Servidor Júpiter.

A la hora de implementar el Proxy Inverso en el Servidor Calisto, tenemos que

ejecutar un Script adaptado con las nuevas IP’s y puertos.

4.- Plan de trabajo

Semana Tareas Realizadas

29/09/14-03/10/14 Búsqueda de información sobre Proxy Inverso, Proxmox y

Docker para realizar el Proyecto Final

06/10/14-10/10/14 Búsqueda de soluciones existentes para implementar el

Proyecto en los Servidores y desarrollo de la documentación

13/10/14-17/10/14 Implementación de la Solución elegida de forma Local

Revisión del Proyecto en el Centro para concretar y avanzar

el Proyecto y la Documentación

20/10/14-24/10/14 Desarrollo del Diseño del Proyecto

27/10/14-31/10/14 Implementación del Proxy Inverso en el Servidor Calisto

Revisión del funcionamiento del Proxy en el Centro

03/11/14-07/11/14 Implementación de la herramienta Docker en el Servidor

10/11/14-14/11/14 Investigación sobre la creación, el borrado y la exportación

de los Contenedores Docker

17/11/14-21/11/14 Implementación de diferentes contenedores de forma Local

con diferentes Proyectos de prueba

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 15: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 15/43

Corrección de algunos puntos de la documentación

24/11/14-28/11/14 Implementación de los Contenedores Docker en el Servidor

01/12/14-05/12/14 Revisión del funcionamiento de los Proyectos Docker

08/12/14-12/12/14 Finalización de la Implementación del Proyecto en los

Servidores del Centro

5.- Diseño

5.1. Diseño general

A continuación, vamos a mostrar el Diseño Conceptual General con los Servidores,

Máquinas y Servicios que componen nuestro Proyecto:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 16: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 16/43

5.2. Diseño detallado

Proxy Inverso

Sistema operativo: Debian 7 32bits sin interfaz gráfica

Espacio en disco: 1 GB

Memoria ram: 512 MB

IP: 192.168.12.106

Es una máquina virtual que se encuentra dentro del servidor Calisto y a su vez

dentro de Proxmox.En ella instalaremos el servidor web Nginx, que a su vez posee un proxy inverso.

Para configurar los sitios a los que apuntará el proxy inverso utilizaremos la carpeta

/etc/nginx/sites-availables y mediante un enlace simbólico los añadiremos a

/etc/nginx/sites-enabled.

Cada sitio tendrá su propio archivo de configuración en la que se indicará el puerto

de escucha, el puerto de destino, la ip del recurso y la url por la que se accederá.

Esta máquina también contiene un script iptables que debemos lanzar para acceder a

los recursos que no sean web.

Gestor de contenedores docker

Sistema operativo: Debian 7 64bits sin interfaz gráfica

Espacio en disco: 40 GB

Memoria ram: 1024 MB

IP: 192.168.12.110

Es una máquina virtual que se encuentra dentro del servidor Júpiter y a su vez

dentro de Proxmox.

En ella instalaremos docker para gestionar los contenedores que crearemos

posteriormente.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 17: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 17/43

Crearemos un contenedor docker con el sistema operativo debian básico, donde

instalaremos un proyecto web con los servicios de apache y mysql para poder

implementar un wordpress, y un segundo contenedor de la misma forma pero con

un proyecto web joomla, a cada uno de los proyectos le asignaremos un puerto

diferente para acceder a cada uno de ellos.

En cada contenedor también nos hará falta implementar un supervisor que nos

permita iniciar el contenedor con más de un servicio.

Máquina virtual Windows

Sistema operativo: Windows 2008 Server

Espacio en disco: 8 GB

Memoria ram: 1024 MB

IP: 192.168.12.104

Contenedor Proxmox

Sistema operativo: Debian 7 32bits

Espacio en disco: 10 GB

Memoria ram: 512 MB

IP: 192.168.12.129

Es un Contenedor proxmox creado en el servidor de Júpiter y que contiene la

aplicación de inventario.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 18: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 18/43

6.- Implantación

Configuración e Instalación del Proxy Inverso

Primero empezamos configurando la Máquina Virtual dedicada al Proxy Inverso:

Actualizamos la lista de paquetes con el comando “apt-get update”

Actualizamos los servicios instalados con el comando “apt-get upgrade”

Ahora vamos a instalar “nginx” como Servidor Web/Proxy Inverso en la máquina:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 19: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 19/43

Nos dirigimos a la carpeta donde podemos crear los diferentes sitios disponibles

para nuestro Servidor Web/Proxy Inverso y creamos los sitios que se corresponden

a los diferentes proyectos implantados:

Podemos ver por ejemplo la estructura del fichero que se corresponde al sitio

“inventario”:

En el fichero creado para el Sitio “inventario” seguimos la siguiente estructura:

listen; Indicamos el puerto de escucha, en nuestro caso, el puerto 80

server_name; establecemos la dirección de acceso al Sitio creado:

“inventario.iesgrancapitan.org”

proxy_pass; ponemos la IP que apunta al proyecto de inventario, junto con el puerto:

Sitio Inventario

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 20: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 20/43

Creamos un enlace simbólico al Sitio creado “inventario” para que nuestro sitio

aparezca en la carpeta de Sitios activados:

De la misma forma creamos los distintos sitios respetando la misma estructura,

cambiando la dirección de acceso junto con la IP y el puerto:

Sitio Joomla

Sitio Wordpress

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 21: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 21/43

Sitio Windows

Una vez que tenemos todos los sitios

Reiniciamos el Servicio “nginx” con el comando “service nginx restart”:

DNS

Definición de los alias en el DNS para los sitios:

cpd IN CNAME informatica-gcap2.no-ip.org.

inventario IN CNAME informatica-gcap2.no-ip.org.

wordpress IN CNAME informatica-gcap2.no-ip.org.

joomla IN CNAME informatica-gcap2.no-ip.org.

windows IN CNAME informatica-gcap2.no-ip.org.

moodle-old IN CNAME informatica-gcap2.no-ip.org.

gestordecocina IN CNAME informatica-gcap2.no-ip.org.

Dentro del proxy inverso hay un cliente de no-ip que actualiza cada 5 minutos la IP que vaa ir recogiendo la dirección no-ip que hemos definido arriba (informatica-gcap2.no-ip.org).

Como se puede apreciar en la siguiente captura del Cortafuegos, la resolución de los

siguientes sitios pasan al proxy inverso que es el que redirecciona y nos permite elacceso a los siguientes proyectos:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 22: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 22/43

Realizamos una prueba de conexión a la dirección de acceso que hemos asignado al

Proyecto “Inventario”:

Comprobamos que podemos acceder al Sitio Inventario poniendo la dirección:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 23: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 23/43

Comprobamos que podemos acceder al Sitio Wordpress poniendo la dirección:

Comprobamos que podemos acceder al Sitio Joomla poniendo la dirección:

Comprobamos que podemos acceder al Sitio Windows poniendo la dirección:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 24: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 24/43

Configuración e Instalación de Contenedores Docker

Primero instalamos el cliente Curl que sirve para obtener ficheros desde servidoresFTP y HTTP, en nuestro caso para obtener la instalación de “Docker”:

Una vez instalado “curl” obtenemos la instalación de “Docker”:

Una vez descargado e instalado el Servicio Docker, Pasaremos a la creación de los

contenedores.

En Primer lugar cargaremos a docker las imágenes con el entorno que utilizaremos

para cada contenedor, estas imágenes se encuentran en un repositorio que tiene

docker.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 25: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 25/43

En este caso elegiremos Debian (podemos especificar la versión de Debian que

queremos, pero por defecto nos instala la última versión de Debian disponible):

Comienza la descarga e instalación de la imagen debian:

Una vez finalizado el proceso, tendremos nuestra imagen de Debian en docker.

Con la imagen ya creada, lanzamos el contenedor con esa imagen en una nueva

estancia y accedemos al contenedor:

Por defecto al lanzar el contenedor, se nos asigna un ID y un nombre aleatorio, pero

si queremos que el nombre del contenedor sea el que deseemos tendremos que

lanzarlo con la opción --name:

docker -i -t --name contenedor1 debian /bin/bash

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 26: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 26/43

Una vez dentro del contenedor podremos configurar nuestro proyecto.

En primer lugar instalaremos una serie de paquetes necesarios para montar un proyecto web, como por ejemplo Joomla.

Actualizamos el repositorio de paquetes y realizamos la instalación de los siguientes

paquetes:

apt-get update

apt-get apache2 curl mysql-server php5 php5-mysql

apt-get install nanoapt-get install wget

apt-get install unzip

Una vez que tengamos todos estos paquetes instalados, ya tendremos instalados los

servicios de apache y mysql necesarios para la instalación de un proyecto web como

Joomla.

Creamos en nuestro servidor mysql la base de datos que utilizará Joomla:

Reiniciamos el servidor mysql:

service mysql restart

Con mysql y apache ya configurados para nuestro proyecto web joomla, nos

descargamos la última versión de joomla disponible con el comando wget:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 27: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 27/43

Una vez descargado lo descomprimimos en /var/www

Una vez descargado y descomprimido joomla salimos del contenedor presionando

lo siguiente:

Control+q+p

y guardamos todos los cambios realizados hasta ahora con todos los servicios

instalados y configurados en una nueva imagen de ese contenedor con el siguiente

comando:

docker commit nombre_contenedor nombre_nueva_imagen

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 28: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 28/43

Una vez tengamos modificado el contenedor con todo los cambios que hayamos

hecho, si queremos que el contenedor sea lanzado tanto con el servicio de apache

como con el servicio de mysql, instalamos dentro del contenedor un supervisor:

Creamos un script “run.sh” que nos lanzará la herramienta supervisord que

acabamos de instalar:

Ahora vamos a crear un script para cada servicio que deseamos iniciar con

“supervisord”, en nuestro caso para wordpress y joomla necesitamos los servicios

apache y mysql.

Creamos un script que nos inicie el servicio “apache2”:

Y creamos otro script que nos inicie el servicio “mysql”:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 29: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 29/43

Por último, creamos un fichero de configuración para nuestro supervisord que nos

permite ejecutar varios servicios con su correspondiente script:

Creamos el fichero para el servicio apache:

Creamos el fichero para el servicio mysql:

Con esto ya tenemos la imagen de nuestro contenedor preparada para ser lanzada

con el script que permite que tanto apache como mysql se inicien con el comando:

Comprobamos que tenemos el contenedor iniciado y con el puerto asignado:

Para crear un segundo contenedor de wordpress seguimos los mismos pasos

descritos anteriormente.

Tenemos que crear un segundo contenedor que contiene los ficheros de instalación

de Wordpress.

Y una vez lanzado el contenedor, nos tienen que salir los dos contenedores iniciados

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 30: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 30/43

si ponemos el siguiente comando:

A la hora de implementar los contenedores, primero hemos creado los contenedores

con todo lo necesario de forma local (un contenedor con joomla configurado y otro

contenedor con wordpress configurado).

Primero hemos guardado todos los cambios realizados en los contenedores en dos

nuevas imágenes que luego serán exportadas y usadas en otro sistema.

Hemos exportado las imágenes creadas de los contenedores finales en un fichero

comprimido con el comando:

docker save nombreimagen > nombrefichero.tar

Por ejemplo:

Hemos copiado los ficheros a la máquina donde hemos tenido que implantarlofinalmente y con el siguiente comando hemos importado las imágenes:

docker load < wordpress.tar

docker load < joomla.tar

Ejemplo:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 31: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 31/43

Por último comprobamos que las imágenes con todos los servicios instalados yconfigurados se han importado correctamente:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 32: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 32/43

7.- Recursos

7.1. Herramientas hardware

- Servidor Jupiter:

- Servidor Calisto:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 33: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 33/43

7.2. Herramientas software

- Proxmox VE 3.3

- Docker v1.3- Debian GNU/Linux 7

- Ubuntu 12.04

- Nginx 1.2.1

7.3. Personal

Las personas que se han dedicado a la creación del Proyecto son:

Francisco Portavella Zamorano

Jose Povedano Romero

Emanuel Adrian Gabriel Stasiuc

Durante la fase de investigación del Proyecto, se ha dedicado todo el Personal para

encontrar información relevante para la implementación del Proyecto de una forma

adecuada y eficiente.

Para la implementación de forma local de las diferentes partes del Proyecto se ha

ocupado Francisco Portavella Zamorano.Durante el desarrollo de la documentación del Proyecto hemos asignado diferentes

puntos de la documentación para cada uno de nosotros con posibilidad de trabajo en

grupo para sugerir cambios y aplicar modificaciones.

En la fase de Implementación del Proyecto en el Centro todo el personal se ha

conectado de forma Remota para instalar servicios, realizar cambios, etc.

7.4. Presupuesto

A continuación exponemos el presupuesto orientado al proyecto, destacando elnúmero de horas que hemos empleado en cada una de las fases del proyecto:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 34: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 34/43

8.- Conclusiones

8.1. Grado de consecución de objetivos

- Estudio de Máquinas Virtuales bajo Proxmox como entidades

independientes

TOTALMENTE TERMINADO

- Estudio de Contenedores bajo Proxmox como entidades

independientes

TOTALMENTE TERMINADO

- Estudio de Contenedores Docker bajo Máquinas/Contenedores

Proxmox como entidades independientes

TOTALMENTE TERMINADO

- Implementación de los tres tipos de entidades independientes

TOTALMENTE TERMINADO

- Configuración de servicio DNS exterior

TOTALMENTE TERMINADO

- Configuración de servicio DNS del departamento

TOTALMENTE TERMINADO

- Implementación de un proxy inverso en los servidores deldepartamento

TOTALMENTE TERMINADO

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 35: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 35/43

8.2. Problemas encontrados

El mayor problema que hemos encontrado y que nos ha costado varios días resolver

es el arranque de más de un servicio en los contenedores docker.En la red casi todas las fuentes de información emplean un contenedor por servicio

(ejemplo contenedor para mysql y otro para wordpress) que van relacionándose

entre sí para utilizar más de un servicio.

Como este no era nuestro caso hemos intentado a toda costa lanzar un contenedor

con más de un servicio propio.

El problema viene al montar un proyecto wordpress/joomla (que utilizan apache y

mysql) en un contenedor, a la hora de lanzar este contenedor solo podemos iniciarlo

con un servicio a través de la línea de comandos, es por ello que hemos tenido problemas con mysql, porque apache nos iniciaba pero apache no tenia conexion al

servidor de base de datos porque este se encontraba parado.

Tras mucho esfuerzo conseguimos dar con la solución a este problema.

La solución fue la implementación de un supervisor en el propio contenedor que

mediante un script podemos indicar qué servicios arrancarán cuando el contenedor

se lanze. Gracias a esta solución cuando lanzamos el contenedor, tanto el servicio

de apache como el de mysql están iniciados.

8.3. Futuras mejoras

En cuanto a la implementación de contenedores en la actualidad Docker sigue

siendo una tecnología aún en fase de desarrollo y seguramente con el tiempo nos

ofrecerá más soluciones y herramientas.

En este proyecto hemos utilizado todo lo que hay referente a la utilización de

docker hoy en dia.

Una de las posibles futuras mejoras se encuentra en el Desarrollo de Docker que en

un futuro próximo podría permitir la ejecución de dos servicios simultáneos en un

mismo contenedor Docker sin la utilización de un script.

Otra posible mejora en Docker sería la posibilidad de guardar los cambios de un

contenedor como una imagen, con el mismo nombre, sobreescribiendo los cambios

sin necesidad de asignarle un nombre diferente.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 36: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 36/43

9.- Referencias / Webgrafía

http://www.systerminal.com/2014/05/08/instalacion-y-uso-de-docker-en-debian-7-

wheezy/

http://www.cristalab.com/tutoriales/instalacion-y-primeros-pasos-en-docker-c11408

1l/

http://picodotdev.github.io/blog-bitix/2014/11/inicio-basico-de-docker/

http://www.rubenjgarcia.es/2014/09/18/instalando-wordpress-con-docker/

http://codehero.co/como-instalar-y-usar-docker/

http://blackhold.nusepas.com/2014/03/debian-7-wheezy-lxc-docker/

https://docs.docker.com/articles/using_supervisord/

http://nginx.com/resources/admin-guide/reverse-proxy/

http://slopjong.de/2014/09/17/install-and-run-a-web-server-in-a-docker-container/

http://www.centurylinklabs.com/build-a-2-container-app-with-docker/?hvid=tMFAJ

http://es.slideshare.net/dotCloud/dockerizing-wordpress-27181463

https://www.digitalocean.com/community/tutorials/how-to-dockerise-and-deploy-multiple-wordpress-applications-on-ubuntu

https://www.linode.com/docs/websites/nginx/basic-nginx-configuration

https://github.com/ricardoamaro/docker-drupal

https://github.com/Odiobill/docker.wordpress

https://eltioe1000.wordpress.com/2014/03/05/docker-y-nginx/

http://otherlinuxblog.blogspot.com.es/2012/05/proxy-inverso-con-nginx.html

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 37: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 37/43

10.- Anexos

Tutorial de Instalación y configuración de un Proxy Inverso (Nginx)

Primero vamos a instalar el Proxy Inverso, en nuestro caso: Nginx

Una vez instalado, podemos ir a la carpeta de instalación donde se encuentran los

sitios disponibles y los sitios que activamos, muy parecido con Apache:

Creamos un fichero con un sitio de prueba con la siguiente estructura:

listen; Indicamos el puerto de escucha, en nuestro caso, el puerto 80

server_name; establecemos la dirección de acceso al Sitio creado:

“sitioprueba.prueba.com”

proxy_pass; ponemos la IP que apunta al contenido o proyecto, junto con el puerto:

Ahora tenemos que crear un enlace simbólico al fichero para que aparezca dentro de

los sitios activados:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 38: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 38/43

ln -s /etc/nginx/sites-available /etc/nginx/sites-enabled/

Una vez realizados todos los cambios, reiniciamos el servicio nginx:

apt-get install nginx restart

Tutorial de Instalación y configuración de Contenedores Docker

Primero instalamos el servicio “curl”:

Una vez descargado e instalado “curl” obtenemos la herramienta docker con el

siguiente comando:

Una vez instalado, podemos mirar la versión de nuestro Docker con el comando:

Una vez instalado, Docker es como cualquier otro servicio que puede pararse o

iniciarse; ahora mismo está en ejecución:

Repositorio de Imágenes

Una de las grandes ventajas que tiene Docker es un gran repositorio de imágenesque tiene disponibles para su descarga con las que podemos crear contenedores.

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 39: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 39/43

Para descargar por ejemplo una imagen Ubuntu del repositorio, tenemos que poner

el siguiente comando:

De ésta forma nos bajamos la última versión de Ubuntu disponible.

Si por el contrario queremos una versión específica, indicamos tras los dos puntos la

versión del sistema operativo que queremos bajar:

Para comprobar las imágenes que tenemos descargadas y disponibles usamos:

Podemos observar las imágenes que tenemos descargadas, el tamaño que ocupan, el

ID que tiene asignado y la fecha de creación/descarga.

Creación y utilización de Contenedores Docker

Para crear un contenedor a partir de una imagen descargada tenemos que usar el

siguiente comando:

Comprobamos que ya estamos dentro del contenedor y que tenemos el sistema de

archivos habitual de un sistema Debian:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 40: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 40/43

Si ponemos “exit” dentro del contenedor nos salimos y el contenedor ya no seejecuta comprobando con el comando “docker ps” los que están en ejecución:

Sin embargo, tenemos un atajo de Teclado:

Ctrl. + q + p

que nos permite salirnos del contenedor sin que deje de ejecutarse.

Podemos comprobarlo con el comando “docker ps”:

Gracias a éste comando podemos ver la información de los contenedores que

tenemos en ejecución.

Podemos ver el ID, el nombre aleatorio y el tiempo de ejecución que tiene cada

contenedor.

Podemos observar que por defecto, a cada contenedor creado se le asigna un

nombre aleatorio formado por dos palabras.

Tanto el nombre aleatorio asignado como el ID serán utilizados para iniciar, parar o

borrar un contenedor.

Si queremos evitar que nos asignen un nombre aleatorio para nuestro contenedorDocker, podemos asignarle nosotros un nombre al crear el contenedor con la

función --name:

docker run -i -t --name miprimercontenedor debian:7.7 /bin/bash

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 41: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 41/43

Una vez que tenemos uno o varios contenedores ejecutados podemos volver a

meternos dentro del mismo si nos hemos salido sin cerrarlo con el comando:

Si queremos parar el contenedor ejecutado, ponemos el siguiente comando y

comprobamos que el contenedor ya no se ejecuta:

Si queremos volver a iniciar el contenedor, usamos el comando:

Una vez que estamos dentro de un contenedor creado, podemos actualizar los

servicios que vienen por defecto o instalar nuevos servicios como en un sistema

operativo linux habitual:

Si instalamos servicios o configuramos el contenedor y luego lo cerramos,

perderemos todos los cambios realizados en el mismo.

¿Significa ésto que tenemos que empezar desde cero cada vez que iniciamos un

contenedor?

La respuesta es NO, porque antes de cerrar el contenedor podemos guardar los

cambios realizados.

Una vez que hemos instalado y configurado nuestro contenedor con los servicios

deseados podemos guardar los cambios del mismo como una imagen más dentro de

nuestra lista de imágenes descargadas con el siguiente comando:

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 42: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 42/43

Comprobamos que nos aparece una nueva imagen con el nombre que nosotros le

hemos asignado con los cambios que hemos realizado; instalación de apache:

Observamos que ya tenemos una imagen creada con el nombre “debianconapache”

que realmente es una imagen de un Debian 7.7 pero con el servicio de apache que

no viene por defecto; ahora podemos ejecutar un contenedor a partir de ésta imagen

y ya tenemos apache2 instalado, sin necesidad de hacerlo de nuevo.

Borrado de imágenes y contenedores

Si queremos borrar una imagen creada, tenemos que usar el siguiente comando:

docker rmi nombreimagen

Comprobamos que la imagen creada anteriormente ya se ha borrado:

Si queremos borrar algún contenedor ya creado, primero tenemos que pararlo y

luego usamos el comando:

docker rm nombrecontenedor

IES Gran Capitán -- C/. Arcos de la Frontera, S/N -- 14014 Córdoba -- 957-379710

http://www.iesgrancapitan.org – http://www.iesgrancapitan.org/blog04 -- [email protected]

Page 43: Proxy Inverso, Mvs y Docker

8/10/2019 Proxy Inverso, Mvs y Docker

http://slidepdf.com/reader/full/proxy-inverso-mvs-y-docker 43/43

Exportación/Importación de Contenedores Docker

Si queremos realizar Copias de Seguridad de los diferentes contenedores

periódicamente podemos usar la función de exportar/importar para guardar los proyectos y la configuración que se encuentra en los contenedores.

Si queremos exportar un contenedor creado y con los últimos cambios guardados y

luego cargarlo en otro equipo o sistema, primero tenemos que exportarlo en un

fichero “.tar” con el siguiente comando:

docker save debianconapache > contenedorapache.tar

Una vez exportado en un fichero “.tar”, copiamos el fichero al equipo deseado y

ponemos el siguiente comando:

docker load < contenedorapache.tar