Sie sind auf Seite 1von 39

Daniel Rodrguez Prez

2 Administracin de Sistemas Informticos en


Red

INTEGRACIN
DE DOCKER EN
OPENSTACK

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

NDICE
NDICE .................................................................................................................................i
1

INTRODUCCIN ........................................................................................................ 1

COMPONENTES DEL PROYECTO ............................................................................... 2


2.1

OPENSTACK ........................................................................................................ 2

2.1.1

INTRODUCCIN AL CONCEPTO DE COMPUTACIN EN LA NUBE .............. 2

2.1.2

CARACTERSTICAS DE LA COMPUTACIN EN LA NUBE .............................. 2

2.1.3

MODELOS DE ENTREGA DE SERVICIOS EN LA NUBE .................................. 3

2.1.3.1 SOFTWARE COMO SERVICIO (SaaS) ......................................................... 3


2.1.3.2 PLATAFORMA COMO SERVICIO (PaaS)..................................................... 3
2.1.3.3 INFRAESTRUCTURA COMO SERVICIO (IaaS) ............................................. 3
2.1.4

MODELOS DE DESPLIEGUE EN LA NUBE ..................................................... 4

2.1.4.1 NUBES PBLICAS ...................................................................................... 4


2.1.4.2 NUBES PRIVADAS...................................................................................... 4
2.1.4.3
2.1.5

PROYECTO OPENSTACK .............................................................................. 4

2.1.5.1

HISTORIA ............................................................................................. 4

2.1.5.2

ESTRUCTURA DE OPENSTACK ............................................................. 5

2.1.5.3

KEYSTONE ............................................................................................ 5

2.1.5.4

GLANCE ................................................................................................ 6

2.1.5.5

NOVA ................................................................................................... 7

2.1.5.6

SWIFT ................................................................................................... 8

2.1.5.7

CINDER................................................................................................. 9

2.1.5.8

NEUTRON .......................................................................................... 10

2.1.5.9

HORIZON ........................................................................................... 10

2.1.5.10

HEAT .................................................................................................. 11

2.1.5.11

CEILOMETER ...................................................................................... 11

2.1.5.12

TROVE ................................................................................................ 12

2.1.6
2.2

NUBES HBRIDAS ................................................................................. 4

DEVSTACK ................................................................................................. 12

DOCKER ............................................................................................................ 13

2.2.5

HISTORIA ................................................................................................... 13

2.2.6

DESCRIPCIN DE DOCKER ........................................................................ 13


i

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
2.2.7

DOCKER FRENTE A MQUINAS VIRTUALES .............................................. 14

2.2.8

CARACTERSTICAS DE LA VIRTUALIZACIN CON DOCKER ........................ 14

2.2.8.1

PORTABILIDAD................................................................................... 14

2.2.8.2

LIGEREZA ........................................................................................... 15

2.2.8.3

AUTOSUFICIENCIA ............................................................................. 15

2.2.9

ARQUITECTURA DE DOCKER ..................................................................... 15

2.2.10 COMPONENTES DE DOCKER ..................................................................... 16


2.2.10.1

IMAGEN DOCKER ............................................................................... 16

2.2.10.2

CONTENEDOR DOCKER ..................................................................... 16

2.2.10.3

REPOSITORIOS DOCKER..................................................................... 16

2.2.11 FUNCIONAMIENTO DE DOCKER ............................................................... 16


3

INTEGRACIN DE DOCKER EN OPENSTACK ............................................................ 17


3.1

NOVA-DOCKER ................................................................................................. 17

3.2

PLUGIN DE DOCKER PARA HEAT ...................................................................... 18

3.3

OPENSTACK MAGNUM .................................................................................... 18

IMPLEMENTACIN DE DOCKER EN DEVSTACK CON NOVA-DOCKER ..................... 19


4.1

INTRODUCCIN................................................................................................ 19

4.2

MEDIOS MATERIALES....................................................................................... 19

4.3

PROCESO DE INSTALACIN .............................................................................. 20

4.3.5

REQUISITOS PREVIOS ................................................................................ 20

4.3.6

INSTALACIN DE DOCKER ........................................................................ 21

4.3.7

INSTALACIN DE NOVA-DOCKER ............................................................. 23

4.3.8

INSTALACIN DE DEVSTACK ..................................................................... 24

4.3.9

CREACIN E INICIO DE UN CONTENEDOR DOCKER ................................. 26

4.3.10 GENERACIN DE PARES DE CLAVE SSH .................................................... 30


5

DIFICULTADES ......................................................................................................... 32

CONCLUSIONES....................................................................................................... 33

BIBLIOGRAFA ......................................................................................................... 34

ii

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
Figura 1RESULTADOS DE LA ENCUESTA DE LINUX FOUNDATION Y THE NEW STACK ..... 1
Figura 2 AUTENTICACIN EN KEYSTONE .......................................................................... 6
Figura 3 DIAGRAMA GLANCE ............................................................................................ 7
Figura 4 DIAGRAMA NOVA ............................................................................................... 8
Figura 5 DIAGRAMA SWIFT ............................................................................................... 9
Figura 6 DIAGRAMA CINDER............................................................................................. 9
Figura 7 DIAGRAMA NEUTRON ...................................................................................... 10
Figura 8 DIAGRAMA DE HEAT ......................................................................................... 11
Figura 9 DIAGRAMA COMPLETO DE OPENSTACK........................................................... 12
Figura 10 COMPARATIVA DE FUNCIONAMIENTO DE UNA MV FRENTE A DOCKER. FUENTE
DOCKER INC. ................................................................................................................... 14
Figura 11 ARQUITECTURA DE DOCKER ........................................................................... 15
Figura 12 ARQUITECTURA DE NOVA-DOCKER ................................................................ 17
Figura 13 ESQUEMA DEL PLUGIN DE HEAT PARA DOCKER ............................................ 18
Figura 14 ESQUEMA DE FUNCIONAMIENTO DE MAGNUM ........................................... 19
Figura 15 INCLUSIN DEL USUARIO STACK EN SUDOERS .............................................. 20
Figura 16 CONFIGURACIN DE RED ............................................................................... 21
Figura 17 SALIDA DEL COMANDO DE AUTENTICACIN ................................................. 22
Figura 18 VERSIN INSTALADA DE DOCKER ................................................................... 23
Figura 19 DESPLIEGUE DE UN CONTENEDOR DE PRUEBA ............................................. 23
Figura 20 CLONACIN DE NOVA-DOCKER ...................................................................... 24
Figura 21 CLONACIN DE DEVSTACK ............................................................................. 24
Figura 22 SALIDA FINAL DEL LANZAMIENTO DEL SCRIPT ............................................... 25
Figura 23 LISTADO DE INSTANCIAS................................................................................. 26
Figura 24 CARACTERSTICAS DE LA INSTANCIA CREADA ................................................ 27
Figura 25 IP FLOTANTE CREADA ..................................................................................... 27
Figura 26 INSTANCIA CON EL DOCKER ARRANCADO ..................................................... 28
Figura 27 VISTA DE LA INSTANCIA A TRAVS DEL NAVEGADOR .................................... 29
Figura 28 INFORMACIN PROPORCIONADA POR HORIZON .......................................... 30
Figura 29 INSTANCIA CREADA CON EL PAR DE CLAVES.................................................. 31
Figura 30 ASOCIACIN DE LA IP FLOTANTE A LA INSTANCIA ......................................... 31
Figura 31 CONEXIN POR SSH CON LA INSTANCIA ........................................................ 32

iii

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

1 INTRODUCCIN
El presente proyecto se va a centrar en dos de los proyectos open source que
ms inters despiertan tanto en desarrolladores como en administradores, como se
refleja en la cantidad de informacin circulando por la red sobre cloud computing o
docker, y llegndose a convertir en buzzwords.
Si recurrimos a datos reales, la encuesta realizada por The New Stack y Linux
Foundation dos aos atrs, en la que se pregunt a 550 encuestados sobre cual
consideraban que era el mejor proyecto de cdigo abierto sobre la nube, dio como
resultado que los de mayor inters eran OpenStack y Docker por ese orden, como se
puede ver en la siguiente grfica:

Figura 1RESULTADOS DE LA ENCUESTA DE LINUX FOUNDATION Y THE NEW STACK

Por ello, el objeto de este proyecto es lograr un acercamiento a estas dos


tecnologas con el objeto de familiarizarse con ellas, y que sirva como comienzo para un
conocimiento ms profundo de dos de las herramientas con mayor potencial que hay
actualidad a pesar de su juventud.
El enfoque que se le va a dar est orientado sobre todo hacia la virtualizacin,
dado que es la funcin principal de docker y parte importante de OpenStack, adems de
ser una herramienta fundamental tanto para desarrollo como para administracin.

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

2 COMPONENTES DEL PROYECTO


2.1 OPENSTACK
2.1.1 INTRODUCCIN AL CONCEPTO DE COMPUTACIN EN LA NUBE
Para poder realizar una exposicin de las caractersticas y componentes de un
proyecto como OpenStack deberemos comenzar por introducir el concepto de
computacin en la nube.
No existe una definicin estndar para describir el trmino nube, el National
Institute of Standars and Technology (NIST) y su Information Technology Laboratory,
definen el cloud computing como un conjunto de hardware y software,
almacenamiento, servicios e interfaces que facilitan la entrada de la informacin como
un servicio. Los servicios de la nube incluyen el software, infraestructura y
almacenamiento en Internet, bien como componentes independientes o como una
plataforma completa, dependiendo de la demanda del usuario.
Los principales agentes que participan en el cloud computing son:
- Proveedores: Proporcionan las aplicaciones y facilitan infraestructura,
plataforma e informacin.
- Usuarios: Utilizan los servicios de la nube bien de forma gratuita o mediante
pago.

2.1.2 CARACTERSTICAS DE LA COMPUTACIN EN LA NUBE


Las principales caractersticas de la computacin en la nube y que le aportan
valor son las siguientes
-

Agilidad para ofrecer recursos tecnolgicos al usuario.


Reduccin de costes, ya que las infraestructuras necesarias son
proporcionadas por un agente externo si se desea.
Escalabilidad y elasticidad.
Independencia entre el dispositivo y la ubicacin: El usuario puede acceder a
los servicios a travs de un navegador web.
La virtualizacin permite migrar fcilmente las aplicaciones de un servidor a
otro.
Rendimiento: Los sistemas en la nube controlan y optimizan el uso de
recursos.
Seguridad: La centralizacin de los datos, permite que los proveedores
dispongan de recursos de seguridad a los cuales muchos clientes no pueden
aspirar.
Mantenimiento: Al tratarse de servicios disponibles en la nube no necesitan
ser instalados en el equipo de cada usuario.

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

2.1.3 MODELOS DE ENTREGA DE SERVICIOS EN LA NUBE


2.1.3.1 SOFTWARE COMO SERVICIO (SaaS)
Hace referencia esencialmente al software residente en la nube. Se trata de la
evolucin natural del software bajo demanda.
SaaS es un modelo de software basado en la web, proporcionando el software a
travs de un navegador web, permitiendo que las aplicaciones sean accesibles desde
diferentes dispositivos cliente mediante una interfaz ligera.
Gracias al modelo SaaS el usuario no necesita ningn software ni debe
preocuparse por el sistema operativo o el hardware que aloja a la aplicacin. Por ello,
no controla la infraestructura que soporta a la aplicacin, ni siquiera los parmetros de
configuracin de sta, a excepcin de la posible configuracin que pueda requerir en el
lado del usuario
Ejemplos de SaaS son Google Docs, Gmail, Dropbox, etc.
2.1.3.2 PLATAFORMA COMO SERVICIO (PaaS)
El modelo PaaS proporciona un entorno de trabajo para el desarrollo de
aplicaciones, proporcionando la infraestructura y la arquitectura necesarias, lo que
incluye recursos de red, almacenamiento de datos, servicios de administracin, soporte
tcnico e incluso canales de distribucin para sus aplicaciones.
Las herramientas para el desarrollo de las aplicaciones son suministradas por el
proveedor, pudiendo el cliente elegir las funciones que desee incluir para satisfacer sus
necesidades. Dichas funciones se actualizan constantemente y se aaden otras nuevas.
De esta manera el usuario dispone de la plataforma de desarrollo y de las herramientas
de programacin, pudiendo desarrollar y controlar la aplicacin, pero no la
infraestructura.
El modelo PaaS resulta de gran utilidad a desarrolladores y pequeas empresas
innovadoras, ya que les permite desplegar sus aplicaciones basadas en web sin el coste
que supone la adquisicin de la infraestructura necesaria.
Los ejemplos ms destacados de PaaS son Google App Engine, Microsoft Azure.
2.1.3.3 INFRAESTRUCTURA COMO SERVICIO (IaaS)
El modelo IaaS proporciona la infraestructura necesaria para ejecutar
aplicaciones. Ofrece almacenamiento, capacidad de proceso, servidores y otra
infraestructura fsica en pago por uso. Se puede incluir la entrega de sistemas operativos
y tecnologa de virtualizacin. El usuario podr controlar sistemas operativos,
almacenamiento y aplicaciones desplegadas. En resumen, el cliente del IaaS alquila
recursos informticos en un centro de datos, en vez de tener que adquirirlos e
instalarlos.

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
Un ejemplo claro del modelo IaaS es Amazon Web Service (AWS), que permite
elegir el tipo de instancia, memoria o procesador de cada mquina, siendo el software
transparente para el usuario. Otros ejemplos son Rackspace Cloud o vCloud de VMWare.

2.1.4 MODELOS DE DESPLIEGUE EN LA NUBE


2.1.4.1 NUBES PBLICAS
En este caso la infraestructura de la nube est a disposicin del pblico general
o de grandes empresas, siendo propiedad de una organizacin que vende sus servicios.
Las nubles pblicas ofrecen los recursos de un modo dinmico y en autoservicio,
mediante Internet a travs de aplicaciones o servicios web.
La nube pblica est alojada, operada y gestionada por un proveedor desde uno
o ms centros de datos, el cual ofrece sus servicios a mltiples clientes mediante una
infraestructura comn. En una nube pblica, la seguridad y las operaciones las controla
el proveedor responsable de la oferta de servicios.
2.1.4.2 NUBES PRIVADAS
La infraestructura de la nube la gestiona una nica organizacin, bien
directamente o por terceras partes, y puede encontrarse en la propia organizacin o
fuera de la misma.
En el caso de la nube privada, la organizacin establece un entorno de
virtualizacin en sus servidores, en sus centros de datos o en los de un proveedor de
servicios. Por ello, las organizaciones compran, construyen y gestionan la nube
asumiendo el control de la misma, sus costes y condiciones de gestin.
El modelo de despliegue de nube privada es til para aquellas empresas con
elevadas inversiones en tecnologas de la informacin, o que deben tener un control
total sobre la infraestructura, ya que la principal ventaja de las nubes privadas es el
control. Este control implica que el cliente de una nube privada es responsable de los
aspectos fsicos y lgicos de la seguridad de la infraestructura de la nube con lo que ello
implica.
2.1.4.3 NUBES HBRIDAS
Una nube hbrida es una composicin de nube pblica y privada. Consta de
mltiples proveedores internos y/o externos, esto permite que el cliente pueda ejecutar
aplicaciones no fundamentales en una nube pblica, mientras que las aplicaciones
vitales y los datos internos sensibles se alojan en la nube privada.

2.1.5 PROYECTO OPENSTACK


2.1.5.1 HISTORIA
OpenStack nace como un IaaS cuyo fin es crear una plataforma de cdigo abierto
para computacin en la nube que satisfaga las necesidades de los proveedores de nubes,
tanto pblicas como privadas, destacando por ser fcil de implementar y muy escalable.
4

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
Sus orgenes se encuentran en un acuerdo de colaboracin entre la NASA y el
proveedor de computacin en la nube Rackspace, en el ao 2010 cuando se liberan sus
proyectos de software propios, Cloud Files de Rackspace y Nebula de la NASA. Desde
entonces ha generado una de las comunidades de cdigo abierto de mayor crecimiento
contando con 520 compaas-miembro, entre las que destacan AMD, Intel, Cisco, IBM,
Canonical, etc.
Al contar con licencia open source est orientado al uso de estndares abiertos
y mantiene repositorios pblicos de cdigo fuente. Esto le ha conferido un gran respaldo
por parte de la comunidad, con casi 2000 programadores dedicados a su desarrollo y
27000 colaboradores distribuidos por 167 pases.
2.1.5.2 ESTRUCTURA DE OPENSTACK
El proyecto OpenStack cuenta con una estructura modular compuesta por 9
componentes principales que forman el ncleo de OpenStack, aunque al tratarse de
cdigo abierto cualquiera puede modificarlo incorporando componentes extra.
Las caractersticas comunes a los diferentes mdulos son:
-

Escritos en Python.
Algunos utilizan AMQP (Protocolo de Cola de Mensajera Avanzado) para
intercambiar mensajes.
Incluyen una API RESTful para la comunicacin entre componentes y con el
exterior.
La autenticacin se basa en un sistema de tokens de cuya gestin se encarga
el mdulo Keystone.
Cuentan con una base de datos propia e independiente.

En los siguientes apartados se har una descripcin de cada uno de los


principales mdulos que componen OpenStack
2.1.5.3 KEYSTONE
Se basa en un directorio centralizado que almacena la informacin sobre:
-

Usuarios.
Proyectos (tenants).
Roles.
Servicios y endpoints.

La informacin se almacena en un Sistema de Gestin de Base de Datos


Relacional (MySQL), y debe ser el primer componente en instalarse, ya que el resto lo
usarn como sistema de autenticacin para acceder a la informacin del proyecto.
Keystone maneja los pedidos de la API y proporciona un nico punto de
integracin para las polticas de OpenStack, catlogos de servicios, token y
autenticacin.

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 2 AUTENTICACIN EN KEYSTONE

2.1.5.4 GLANCE
Para entender la misin de este componente vamos a hacer una pequea
introduccin del concepto de imagen. Una imagen es un archivo nico que contiene los
contenidos y la estructura completa de un medio de almacenamiento. Se utilizan como
medio de distribucin para sistemas operativos e instancias.
Glance permite a los usuarios descubrir, registrar y recuperar imgenes. Ofrece
una REST API que permite obtener los metadatos de la imagen y recuperar una imagen
actual. Las imgenes de las mquinas virtuales se pueden almacenar en un fichero
simple o en el mdulo de almacenamiento de objetos.
Glance gestiona las plantillas de imgenes de los sistemas. Adems, gestiona las
instantneas de las instancias, pudiendo soportar diversos formatos.
Dentro de Glance encontramos:
-

Glance-api que acepta los pedidos para la bsqueda, obtencin y


almacenamiento de imgenes.
Glance-registry procesa y recupera los metadatos de las imgenes.
Al igual que los anteriores dispone de una base de datos que almacena los
metadatos de las imgenes.
6

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Tambin se encarga de proporcionar servicios de replicacin que den


consistencia y disponibilidad a travs del clster, auditora y actualizacin.

Figura 3 DIAGRAMA GLANCE

2.1.5.5 NOVA
Componente principal de OpenStack. Gestiona las instancias de imgenes, dnde
deben ejecutarse y el acceso mediante consola.
Soporta diferentes hipervisores: KVM/QUEMU, Xen, Docker, etc.
Permite aprovisionar mquinas fsicas mediante Baremetal/Ironic.
Funcionamiento:
-

El cliente nova-api acepta y responde a las llamadas del usuario final.


La virtualizacin la administra nova-compute. Crea/finaliza las instancias de
Vms a travs de la Api del hipervisor utilizado.
De la planificacin se encarga nova-schedule. Toma los pedidos de Vms de la
cola y determina dnde ejecutarse.
La cola, es el nodo central para la transmisin de mensajes entre daemons.
Dispone de una base de datos que almacena los datos de estado de
compilacin y ejecucin.
nova-consoleauth, nova-novncproxy, nova-console permiten a los usuarios
acceder a las instancias virtuales a travs de un proxy.
Al crear una instancia se debe seleccionar el flavor (opciones de
configuracin de recursos virtuales disponibles). Luego, pueden agregarse
recursos como volmenes de almacenamiento persistente y direcciones IP
pblicas.

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 4 DIAGRAMA NOVA

2.1.5.6 SWIFT
Es el componente encargado de la administracin de objetos, definiendo estos
como entidades que contienen informacin, pero sin estar sometidos a una jerarqua.
Es decir, todos los objetos se encuentran en un mismo nivel formando un pool de
almacenamiento, de forma que un objeto no puede contener a otro.
Los objetos se caracterizan adems por tener metadatos extendidos. Cada objeto
cuenta con un identificador nico que permite a un usuario final recuperarlo sin
necesidad de conocer la ubicacin fsica de la informacin.
En cuanto a las caractersticas de Swift se resumen en las siguientes:
-

El servidor proxy acepta los pedidos entrantes, como archivos a subir,


modificaciones de los metadatos o creacin de contenedores. Adems,
provee archivos y un listado de los contenedores.
El servidor de cuentas maneja las cuentas asociadas al servicio.
El servidor de contenedores mapea los contenedores y las carpetas dentro
del servicio.
El servidor de objetos administra los objetos, archivos.
Tambin se corren servicios de replicacin, para proveer consistencia y
disponibilidad a travs de un clster, auditora y actualizacin.

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 5 DIAGRAMA SWIFT

2.1.5.7 CINDER
El componente Cinder es el encargado de la gestin de volmenes, siendo estos
dispositivos de bloques que se crean de forma independiente a la instancia y pueden
asociarse o disociarse de ella cuando sea necesario. Se puede pensar en los volmenes
como discos externos que se pueden conectar y desconectar de las instancias.
Cinder incluye controladores para soportar una amplia variedad de los
dispositivos de almacenamiento presentes en el mercado. Cuando Nova termina una
instancia borra todo el contenido local asociado a ella, pero no los volmenes, por lo
que estos se consideran almacenamiento permanente.

Figura 6 DIAGRAMA CINDER

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
2.1.5.8 NEUTRON
Es el componente encargado de la configuracin de redes virtuales.
Gestiona mltiples redes de forma independiente gracias a Linux network
namespaces, que permite que mltiples routers virtuales compartan un dispositivo de
red fsico. Neutron tambin gestiona los grupos de seguridad y las IP flotantes.
Las principales caractersticas de Neutron son:
-

Da a los tenants de la nube una API que construye topologas de red muy
completas, y configura polticas de red avanzadas en la nube.
Permite plugins que introduzcan capacidades avanzadas de red.
Permite cualquier topologa avanzada de servicios de red que se instauren en
las redes de los tenants de OpenStack.
Neutron-server es el principal proceso del servidor de red de OpenStack. Es
un daemon en Python que pasa las peticiones de los usuarios de la API al
plugin configurado. Incluye tres agentes:
Neutron-dhcp-agent: Proporciona servicios de DHCP a todas las redes tenant.
Neutron-l3-agent: Proporciona L3/NAT para permitir el acceso a una red
externa desde las mquinas virtuales.

Figura 7 DIAGRAMA NEUTRON

2.1.5.9 HORIZON
Panel de control web de OpenStack desarrollado en Django.
No incluye todas las funcionalidades de la API de cada componente, pero si los
medios ms utilizados.
El panel de control proporciona al administrador y a los usuarios una interfaz
grfica para acceder, provisionar y automatizar los recursos basados en la nube.
Adems, contiene herramientas de monitorizacin y gestin adicionales.

10

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
Capacidades de Horizon:
-

Permite controlar a los administradores y usuarios sus recursos en la nube.


Proporciona al administrador una vista global del estado de la nube. Adems,
le permite crear usuarios y proyectos, y asignarlos entre ellos.
Permite a los usuarios provisionar sus propios recursos dentro de los lmites
establecidos por el administrador.

2.1.5.10 HEAT
Este componente gestiona el servicio de orquestacin basado en plantillas para
describir una aplicacin en la nube mediante las llamadas de la API de OpenStack para
ejecutar esas aplicaciones.
Las plantillas permiten crear instancias, IPs flotantes, volmenes, usuarios, etc.
Incluso proporciona funcionalidades de orquestacin avanzadas para crear instancias de
alta disponibilidad, auto-escalables o clster anidados.

Figura 8 DIAGRAMA DE HEAT

2.1.5.11 CEILOMETER
Proporciona una infraestructura para la monitorizacin y medicin de la nube.
Cuenta con el mdulo Telemetry que se encarga de:
- Recoger las mediciones de datos sobre la CPU y los costos de red.
- Recopila datos de notificaciones de monitorizacin enviadas por los servicios o
sondeando la infraestructura.
- Configura los tipos de datos recopilados para satisfacer requisitos de funcionamiento.
- Se puede expandir para recopilar el uso de datos mediante plugins adicionales.
11

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
- Genera mensajes de mediciones firmados que no pueden ser rechazados.
2.1.5.12 TROVE
Es el servicio de bases de datos, y proporciona una funcionalidad de
provisionamiento en la nube escalable y segura tanto para motores de BBDD
relacionales y no relacionales.
Trove proporciona recursos de aislamiento a un alto nivel de rendimiento y
automatizacin de tareas como el despliegue, configuracin, aplicacin de parches,
copias de seguridad, restauraciones y monitorizacin.
La forma en que todos estos componentes se relacionan entre si se muestra de
forma simplificada en el siguiente grfico:

Figura 9 DIAGRAMA COMPLETO DE OPENSTACK

2.1.6 DEVSTACK
El objetivo del proyecto Devstack es proporcionar un conjunto de herramientas
utilizadas para la instalacin de los principales servicios de OpenStack, adecuadas para
12

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
las diferentes pruebas operacionales y de desarrollo. Tambin permite demostrar y
documentar diferentes ejemplos de configuracin y de funcionamiento de servicios.
Devstack es un script que permite crear rpidamente un entorno de desarrollo
Openstack en el que poder realizar pruebas y ejemplos de demostracin. Sin embargo,
dichos ejemplos fueron llevados ms all llegando a ser una comprobacin rpida para
una instalacin de OpenStack.
No obstante, se debe dejar claro que Devstack no es ni ha sido un instalador de
OpenStack, pero ha evolucionado de manera que soporta un gran nmero de opciones
de configuracin, plataformas diferentes y servicios de soporte.

2.2 DOCKER
2.2.5 HISTORIA
El proyecto de cdigo abierto Docker naci como un proyecto interno de
dotCloud, empresa que pretenda ofrecer una plataforma como servicio (PaaS), de la
mano de Salomon Hykes y con la colaboracin de Andrea Luzzardi, Francois-Xavier
Bourlet y Jeff Lindsay.
Fue liberado como cdigo abierto en marzo de 2013, y en 2015 ya contaba con
ms de 20700 estrellas de GitHub, ms de 4700 bifurcaciones (forks) y 900
colaboradores.
Entre las empresas y organizaciones implicadas en el proyecto destacan IBM,
Google, Cisco, Amadeus, etc.
A pesar de lo reciente de su creacin, el proyecto docker se ha convertido en una
herramienta de gran ayuda tanto a desarrolladores como a administradores de sistema
para la realizacin de pruebas o el despliegue de servicios.

2.2.6 DESCRIPCIN DE DOCKER


La idea base de Docker es la creacin de contenedores ligeros y portables para
aplicaciones de software que se puedan ejecutar en cualquier mquina con Docker
instalado, independientemente del sistema operativo del equipo anfitrin. Esto implica
que proporciona una herramienta de cdigo abierto que permite realizar una
virtualizacin ligera con la que empaquetar entornos y aplicaciones que se podrn
desplegar en cualquier sistema operativo que tenga incluida esta herramienta.
Docker utiliza varias tecnologas, de las que destacan sobre todo dos:
-

Contenedores de Linux LXC (LinuX Containers): Se trata de un mtodo de


virtualizacin a nivel del sistema operativo, para ejecutar mltiples
servidores aislados (contenedores) en un solo host controlador.
AuFS: Es un sistema de archivos en capas, de manera que se puede obtener
una parte de tan solo lectura y una parte de solo escritura y combinarlas. De
esta forma se tienen partes comunes en el sistema operativo de solo lectura
13

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
compartidas a travs de contenedores, y asignar a cada contenedor su propia
montura para la escritura.

2.2.7 DOCKER FRENTE A MQUINAS VIRTUALES


Un contenedor docker contiene una aplicacin y sus dependencias, de forma que
asla los procesos que se ejecutan independientemente en el espacio de usuario en el
sistema operativo host.
Esto difiere de forma importante de una mquina virtual, en la que contamos
con un sistema operativo completo. Esto hace que una aplicacin virtualizada junto con
los binarios y libreras que necesite para su ejecucin pese en torno a 10 MB, mientras
que la mquina virtual se vaya a 10 GB.

Figura 10 COMPARATIVA DE FUNCIONAMIENTO DE UNA MV FRENTE A DOCKER. FUENTE DOCKER INC.

Debido a que los contenedores comparten el mismo sistema operativo, y si se


puede binarios y libreras, son notablemente ms ligeros que las mquinas virtuales,
haciendo posible almacenar un nmero muy superior de contendores docker en un host
fsico, frente al nmero limitado de mquinas virtuales que podra soportar el mismo
sistema.

2.2.8 CARACTERSTICAS DE LA VIRTUALIZACIN CON DOCKER


2.2.8.1 PORTABILIDAD
El contenedor docker permite su despliegue en cualquier sistema que soporte
esta tecnologa, de forma que no es necesario instalar en el nuevo entorno las
aplicaciones que normalmente se utilicen.
Esta flexibilidad en la portabilidad permite a la virtualizacin con docker resolver
incompatibilidades con versiones y entre herramientas. Por ejemplo, si el entorno de
desarrollo necesita una versin de Java, con incluirla en el docker, este ser portable a
otros equipos con versiones diferentes.
14

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
Adems, por otro lado, al utilizar el sistema operativo anfitrin, reiniciar el
docker no significa reiniciar el sistema operativo, lo que les da un plus de portabilidad y
eficiencia.
2.2.8.2 LIGEREZA
Esta tecnologa presenta una ligereza incomparable con cualquier sistema de
virtualizacin convencional. Si por ejemplo comparamos con virtualbox, una mquina
con una imagen de Ubuntu pesar en torno a 1 Gb, en el caso de un docker con Ubuntu,
Apache y una aplicacin web, su tamao estar en torno a los 180 Mb. Esta caracterstica
permite que el despliegue de dockers que se puede realizar en un equipo sea mucho
mayor que con otras herramientas de virtualizacin. O en caso de equipos obsoletos o
con menos potencia puedan ser aprovechados.
2.2.8.3 AUTOSUFICIENCIA
Un contenedor Docker no contiene todo un sistema completo, sino nicamente
las libreras, archivos y configuraciones necesarias para el despliegue de las
funcionalidades incluidas en l. Adems, Docker gestiona el contenedor y las
aplicaciones que contenga.

2.2.9 ARQUITECTURA DE DOCKER


Docker utiliza una arquitectura cliente-servidor. El cliente se comunica con el
demonio Docker, el cual se encarga de construir, lanzar y distribuir los contenedores
Docker. Ambos, el cliente y el demonio, pueden ejecutarse en el mismo equipo, o se
puede conectar un cliente docker a un demonio remoto. En este ltimo caso, el cliente
y el demonio se pueden comunicar a travs de sockets o de un API RESTful.

Figura 11 ARQUITECTURA DE DOCKER

Como se puede ver en la imagen anterior, el demonio docker se ejecuta en una


mquina anfitrin. El usuario no interacta directamente con el demonio, lo hace a
15

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
travs del cliente Docker, el cual recibe los comandos del usuario y se los transmite al
demonio

2.2.10 COMPONENTES DE DOCKER


2.2.10.1 IMAGEN DOCKER
Las imgenes en docker se pueden entender como un componente esttico,
formado por un sistema operativo base con un conjunto de aplicaciones instaladas.
Sobre esta base se podrn aadir las herramientas y funcionalidades que vayan a ser
necesarias en el equipo donde vayamos a usar la imagen.
De cara al mantenimiento y creacin de estas imgenes docker provee
herramientas para la actualizacin de las imgenes que ya hemos creado, y para la
creacin de nuevas imgenes.
2.2.10.2 CONTENEDOR DOCKER
Es una instancia o ejecucin de una imagen, permitiendo ejecutar varios
contenedores a partir de la misma imagen. Contiene todo lo necesario para que una
aplicacin pueda funcionar sin necesidad de repositorios externos al contenedor, de
forma que cada contenedor es una plataforma de aplicaciones segura y aislada del resto
de contenedores que podamos desplegar en la misma mquina.
2.2.10.3 REPOSITORIOS DOCKER
Tambin reciben la denominacin de Registros Docker.
Contienen imgenes creadas por otros usuarios y puestas a disposicin del
pblico. Hay dos clases, repositorios pblicos totalmente gratuitos, y repositorios
privados donde se pueden adquirir las imgenes que se necesite.
Los repositorios permiten desplegar aplicaciones de forma simple y rpida
utilizando las plantillas disponibles, y ahorrando tiempo en el proceso de creacin o
implementacin de aplicaciones.

2.2.11 FUNCIONAMIENTO DE DOCKER


Cada imagen est formada por una serie de capas, de forma que una imagen se
construye a partir de una imagen base (Ubuntu, Fedora, o una imagen base propia)
sobre la cual se van creando capas a travs de una serie de instrucciones.
Dichas instrucciones se almacenan en un archivo llamado dockerfile. Un
dockerfile en un script que contiene instrucciones y comandos para construir una
imagen a partir de una imagen base. Docker lee el dockerfile cuando recibe la peticin
de construccin de imagen, ejecuta las instrucciones y genera la imagen final.
El siguiente paso es colocar tu imagen construida en un repositorio de Docker, el
cual puede ser un repositorio pblico o uno privado.
A travs del cliente de Docker se pueden buscar imgenes ya publicadas y
descargarlas en tu equipo para generar contenedores a partir de ellas.
16

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
Una vez que hemos obtenido nuestra imagen de un repositorio pblico o
privado, podemos crear contenedores a partir de ella. Dicha imagen le indica a Docker
que debe contener el contenedor, que procesos debe ejecutarse cuando se lance el
contenedor, y otros datos de configuracin. Como los permisos de la imagen son de solo
lectura, cuando se lanza un contenedor se aade una capa de lectura-escritura en la
parte superior de la imagen, en la cual se ejecuta la aplicacin.

3 INTEGRACIN DE DOCKER EN OPENSTACK


Actualmente las principales herramientas para la implementacin de docker en
OpenStack son:
-

Nova-Docker
Plugin de Docker para Heat
OpenStack Magnum

A continuacin, se realizar una descripcin de cada una de ellas.

3.1 NOVA-DOCKER
Como se ha indicado anteriormente, Nova gestiona las mquinas virtuales. El
drive Nova-Docker nos permite instanciar contenedores de forma integrada en
OpenStack, almacenando las imgenes en Glance sin utilizar un registro de imgenes
externo. Esto lo consigue utilizando Docker como una forma de hipervisor, como se
puede ver en el esquema siguiente:

Figura 12 ARQUITECTURA DE NOVA-DOCKER

El driver Nova Docker Virt se comunica con la herramienta Docker usando


una API (Interfaz de Programacin de Aplicaciones) HTTP.

17

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Las imgenes docker se almacenan en el registro de Docker y desde all se


exportan a Glance, donde Nova las usar para instanciar los contenedores.

3.2 PLUGIN DE DOCKER PARA HEAT


Este plugin permite utilizar Heat para orquestar contenedores Docker. Una vez
que est instalado permite crear contenedores y desplegar las aplicaciones sobre ellos.
Es necesario identificar los recursos requeridos, editar la plantilla y desplegarla en Heat.
Esto lo consigue ejecutando los contenedores en el interior de una mquina virtual.
En el esquema siguiente podemos ver el funcionamiento de Heat.

Figura 13 ESQUEMA DEL PLUGIN DE HEAT PARA DOCKER

3.3 OPENSTACK MAGNUM


Se trata de una solucin genrica para la gestin de contenedores desarrollada
por OpenStack para administrar Docker y otras tecnologas de contenedores.
Actualmente, Magnum soporta Kubernetes y Docker. En ambos casos, se crea un clster
de anfitriones y los contenedores se gestionan desde el clster usando una serie de
algoritmos y restricciones. El funcionamiento de Magnum se expone en el siguiente
esquema:

18

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 14 ESQUEMA DE FUNCIONAMIENTO DE MAGNUM

Como se puede ver en el esquema Magnum necesita otros componentes de


OpenStack como Nova, Heat, etc.:
-

Nova crea micro instancias para ejecutar los contenedores en ellas.


Heat se utiliza para la orquestacin.
Los pasos involucrados son la creacin de una baha modelo, la creacin de
la baha propiamente dicha y entonces la creacin de los contenedores.

4 IMPLEMENTACIN DE DOCKER EN DEVSTACK CON


NOVA-DOCKER
4.1 INTRODUCCIN
En este apartado se va a documentar la implementacin de Docker en Devstack.
Para ello, de las opciones expuestas anteriormente, se ha elegido la herramienta NovaDocker. Las razones para tomar esta decisin se han fundamentado en que fue la
primera herramienta que se cre y aparentemente es la mejor documentada frente a
las otras dos opciones.
Por otro lado, respecto del plugin de Heat, ofrece una verdadera integracin de
Docker en la nube. Y frente a Magnum, este ltimo, se trata de un proyecto que se
encuentra en una fase de desarrollo todava inicial.

4.2 MEDIOS MATERIALES


Para llevar a cabo la integracin de Nova-Docker en Devstack se ha utilizado el
siguiente equipo:
-

Equipo porttil Sony Vaio. Caractersticas:


o S.O.: Windows 10 Home Premium
19

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

o Procesador: Intel Core i7-3612QM @ 2.10GHz


o Memoria RAM: 8,00 GB
o Procesador de 64 bits
o Disco duro: 500 GB
Software de virtualizacin:
o Oracle VM VirtualBox Versin 5.0.16 r105871
Caractersticas de la mquina virtual:
o S.O.: Ubuntu LTS 14.04
o Memoria RAM: 6 GB
o N de procesadores: 4
o Disco duro: 50 GB
o Adaptador de red conectado a adaptador puente.

*Para el correcto funcionamiento debe habilitarse en la BIOS VT-x para la virtualizacin

4.3 PROCESO DE INSTALACIN


4.3.5 REQUISITOS PREVIOS
Debido a que Devstack no se puede ejecutar con el usuario root, se debe crear
un usuario con privilegios. El proceso es el siguiente:
-

Creacin del usuario y asignacin de contrasea (en este caso el usuario ser
stack)

sudo useradd -m stack


sudo passwd stack

Aadimos a /etc./sudoers:

stack ALL=(ALL:ALL) NOPASSWD: ALL

Figura 15 INCLUSIN DEL USUARIO STACK EN SUDOERS

20

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Configuracin de red esttica (en mi caso):


o IP: 192.168.1.100
o Mscara de subred: 255.255.255.0
o Gateway: 192.168.1.1
o DNS: 80.58.61.250

Figura 16 CONFIGURACIN DE RED

4.3.6 INSTALACIN DE DOCKER


Logueados con el usuario stack que acabamos de crear, desde una terminal
vamos introduciendo los siguientes comandos:
-

Actualizamos los repositorios:

sudo apt-get update

Instalamos apt-transport-https.

sudo apt-get install apt-transport-https1

Este paquete habilita el uso de las lneas 'deb https://foo distro main' en /etc./apt/sources.list

21

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Autenticamos los paquetes de instalacin de docker mediante apt-key

sudo apt-key adv --keyserver / hkp://keyserver.ubuntu.com:80 --recvkeys / 36A1D7869245C8950F966E92D8576A8BA88D21E9

Figura 17 SALIDA DEL COMANDO DE AUTENTICACIN

Incluimos el repositorio de docker en docker.list. Para ello aadimos a


/etc./apt/ sources.list.d/docker.list:

deb https://get.docker.com/ubuntu docker main

Actualizamos nuevamente los repositorios e instalamos docker:

sudo apt-get update


sudo apt-get install -y lxc-docker
source /etc/bash_completion.d/docker

Para que docker funcione con el usuario que hemos creado aadimos en
/etc./default/docker

DOCKER_OPTS='-G stack'

Reiniciamos docker y comprobamos la versin

sudo restart docker


docker version

22

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 18 VERSIN INSTALADA DE DOCKER

Para confirmar el funcionamiento de Docker lanzaremos un contenedor

docker run -i -t ubuntu /bin/bash

Figura 19 DESPLIEGUE DE UN CONTENEDOR DE PRUEBA

4.3.7 INSTALACIN DE NOVA-DOCKER


-

Actualizamos los repositorios:

sudo apt-get update

Instalamos los paquetes necesarios:

sudo apt-get install -y python-pip python-dev

Habilitamos la ubicacin para Nova-Docker:

rm -rf /opt/stack/nova-docker
sudo mkdir -p /opt/stack

23

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Clonamos Nova-Docker:

sudo git clone / https://git.openstack.org/openstack/nova-docker


/opt/stack/nova-docker

Figura 20 CLONACIN DE NOVA-DOCKER

cd /opt/stack/nova-docker

Habilitamos la versin stable/kilo (ser la misma que utilizaremos en


devstack):

sudo git checkout stable/kilo && sudo git pull --ff-only origin
stable/kilo

Instalamos Nova-Docker:

sudo pip install pytz2


sudo pip install .

*Genera un error que no afecta posteriormente.

4.3.8 INSTALACIN DE DEVSTACK


-

Lo clonamos en /var

cd /var
sudo git clone -b stable/kilo https://github.com/openstackdev/devstack

Figura 21 CLONACIN DE DEVSTACK

Cambiamos usuario y grupo de los archivos de Openstack

sudo chown -R stack:stack /opt/stack

Este comando evita que se genere un error en la instalacin de Nova-Docker, aunque dicho error luego
no supone problemas aparentes para el desarrollo del resto de la instalacin.

24

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
sudo chown -R stack:stack /var/devstack

Creamos el archivo de configuracin de devstack3 en /var/devstack:

cd /var/devstack
nano local.conf

Contenido:
[[local|localrc]]
VIRT_DRIVER=novadocker.virt.docker.DockerDriver
[[post-config|$GLANCE_API_CONF]]
[DEFAULT]
container_formats=ami,ari,aki,bare,ovf,ova,docker
[[post-config|$NOVA_CONF]]
[DEFAULT]
compute_driver=novadocker.virt.docker.DockerDriver

Lanzamos el script:

./stack.sh

Figura 22 SALIDA FINAL DEL LANZAMIENTO DEL SCRIPT

Instalamos el archive de configuracin rootwrap

sudo cp /opt/stack/nova-docker/etc./nova/rootwrap.d/docker.filters
/etc./nova/rootwrap.d/

Las opciones de configuracin de Devstack son muy amplias, no obstante, y con el objeto de evitar
errores en la ejecucin del script se ha reducido al mnimo imprescindible para habilitar Glance y Nova
para el uso de Docker.

25

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

4.3.9 CREACIN E INICIO DE UN CONTENEDOR DOCKER


-

Nos logueamos con el usuario administrador de Devstack

. openrc admin

Descargamos una imagen docker y la cargamos en Glance

docker pull larsks/thttpd | glance image-create --name


larsks/thttpd --is-public true --container-format docker --diskformat raw

Cambiamos del usuario administrador a un usuario sin privilegios

. openrc demo

Arrancamos la imagen en una instancia

nova boot --image larsks/thttpd --flavor m1.tiny test0


sleep 10

Listamos las instancias para ver el estado, y mostramos las caractersticas de


la que acabamos de generar:

nova list

Figura 23 LISTADO DE INSTANCIAS

nova show test0

26

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 24 CARACTERSTICAS DE LA INSTANCIA CREADA

Creamos una ip flotante para asociarla a la instancia en la que est corriendo


el docker:

nova floating-ip-create

Figura 25 IP FLOTANTE CREADA

nova floating-ip-associate test0 172.24.4.2

Comprobamos que el docker est iniciado:

curl http://172.24.4.2

27

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 26 INSTANCIA CON EL DOCKER ARRANCADO

28

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 27 VISTA DE LA INSTANCIA A TRAVS DEL NAVEGADOR

A travs de Horizon podemos acceder a las instancias creadas, modificarlas, crear


unas nuevas, etc. En la imagen siguiente se muestra el resumen de los proyectos creados
por el usuario demo, en el que podemos ver que est presente la instancia test0 que
acabamos de crear.

29

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

Figura 28 INFORMACIN PROPORCIONADA POR HORIZON

4.3.10 GENERACIN DE PARES DE CLAVE SSH


Debido a que OpenStack genera un entorno de recursos compartidos, siendo
habitual que se creen distintas instancias por diferentes usuarios a partir de la misma
imagen, es una solucin comn utilizar pares de claves pblica/privada para configurar
de forma segura el acceso por ssh a las instancias.
El sistema puede generar un par de claves o utilizar uno que ya tengamos. Debido
a que estamos en un entorno de pruebas a continuacin se expone como se llevara a
cabo el proceso de creacin.
-

Carga en glance de una imagen docker:

. openrc admin
docker pull cirros | glance image-create --name cirros --is-public
true --container-format docker --disk-format raw

30

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Cambiamos al usuario que va a lanzar la instancia

. openrc demo

Utilizamos la herramienta nova keypair-add para crear el par de claves

nova keypair-add llave > llave.pem

Cambiamos los permisos

chmod 600 llave.pem

Lanzamos la imagen utilizando la clave pblica generada

nova boot --image cirros --flavor m1.tiny --key-name llave

test0

Figura 29 INSTANCIA CREADA CON EL PAR DE CLAVES

Creamos una ip flotante y la asociamos a la instancia

nova floating-ip-create
nova floating-ip-associate test0 172.24.4.1

Figura 30 ASOCIACIN DE LA IP FLOTANTE A LA INSTANCIA

31

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Nos conectamos a la instancia por ssh, y mediante la clave no es necesario


usuario y contrasea.

ssh -i /var/devstack/llave.pem cirros@172.24.4.1

Figura 31 CONEXIN POR SSH CON LA INSTANCIA

5 DIFICULTADES
A la hora de afrontar este proyecto la primera dificultad que surgi fue el
potencial y capacidades de las dos herramientas principales utilizadas, tanto OpenStack,
como Docker. Esto ha supuesto que gran parte del tiempo dedicado a su desarrollo se
haya consumido en recabar informacin y documentacin. Esto ha desembocado en dos
consecuencias:
-

Que poder profundizar en ellas haya sido muy complicado, ya que se escapa
del alcance de un proyecto como el que se est presentando. No obstante,
ha servido como toma de contacto con dos tecnologas cuyo desarrollo e
implantacin en el futuro a gran escala parece evidente.
Falta de tiempo para probar las diferentes opciones de integracin de Docker
en OpenStack (Heat y Magnum).

Otro gran inconveniente de la implantacin de OpenStack es la ingente cantidad


de recursos de hardware necesaria. Esto ha obligado a utilizar una herramienta Devstack
que, si bien facilita enormemente el poder desplegar un entorno de pruebas con el que
entrar en contacto con la computacin en la nube, hay que tener en cuenta que se trata
de una herramienta para entornos de prueba, por lo que sus capacidades tanto de
configuracin como de potencia son muy reducidas frente a un despliegue completo de
OpenStack.
Si nos centramos en el objeto del proyecto, la integracin de Docker en
OpenStack, se ha visto que se trata de una tecnologa que de momento se encuentra en
fases iniciales. Esto ha implicado que a la hora de localizar fuentes de documentacin
del proceso, a pesar de las enormes cantidades de informacin presentes en la red tanto
sobre Docker como sobre OpenStack, la documentacin sobre esta implementacin es
bastante reducida en el caso de Nova-Docker, escasa en el del plugin de Heat, y casi
inexistente en el de Magnum. En el caso de la primera, debido a su eleccin para el
proyecto la ms estudiada, sta se focaliza fundamentalmente en la wiki oficial de
OpenStack y en el blog de Oddbits, en el que se basa gran parte de toda la
documentacin que se ha localizado. Ambas estn bastante bien documentadas, pero
tienen defectos de informacin importantes como exponer las caractersticas de la
32

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
mquina utilizada, sobre todo las relacionadas con la configuracin de la red, tan
importante para herramientas como OpenStack y Docker.

6 CONCLUSIONES
Como ya se adelant, las caractersticas de este trabajo no permiten profundizar
en dos herramientas del calibre de las que nos ocupan, pero ha servido para conocerlas
y familiarizarse con ellas. Adems, puede servir de base para la realizacin de trabajos
posteriores.
En cuanto a las conclusiones sobre el desarrollo del proyecto, hay que tener en
cuenta que se centra en una de las capacidades de OpenStack, que es la virtualizacin,
dejando de lado las dems. Por lo cual se debe ser cauteloso a la hora de hacer
aseveraciones.
En cuanto al debate presente en la red sobre Docker frente a Openstack, o ambos
combinados, nos encontramos con que son herramientas muy diferentes. Como se ha
dicho anteriormente OpenStack es una tecnologa muy potente que pretende
proporcionar un conjunto de herramientas para computacin en la nube entre las que
se encuentra el despliegue de contenedores docker. Por otro lado, Docker busca
permitir a los desarrolladores desplegar aplicaciones de forma sencilla, y sin tener que
recurrir al uso de grandes recursos de hardware.
Desde mi punto de vista, ya que el despliegue de docker se puede realizar sobre
una infraestructura compartida y de forma aislada, no he encontrado ventajas en su
inclusin en OpenStack siempre y cuando sea el nico uso que se le vaya a dar a la nube.
Esta conclusin se deriva de la complejidad que implica su puesta en marcha si slo se
necesita una herramienta de virtualizacin. Incluso aunque se renunciara a la
integracin de Docker en la misma, y se limitara al uso de imgenes e instancias de
OpenStack, sigue pareciendo por uso y consumo de recursos una herramienta ms
adecuada Docker.
Sin embargo, si la empresa cuenta con ms sectores de produccin y con el
avance de los complementos necesarios si podra resultar de inters integrar el
despliegue de docker en la nube junto al resto de servicios.
Volviendo a las alternativas de integracin de ambas herramientas. Las
conclusiones a las que se han llegado, a travs de la realizacin de pruebas y el anlisis
de la documentacin, para cada una de ellas son:
-

Nova-Docker: De momento no est plenamente integrado en OpenStack


Nova lo que desemboca en dificultades en su instalacin y funcionamiento
como se ha podido comprobar en el desarrollo del proyecto. Por lo que
todava se encuentra en stackforge, la incubadora de nuevos componentes
de OpenStack.

33

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ
-

Plugin para Docker de Heat: Esta herramienta no supone una integracin real
de Docker en OpenStack, ya que sera similar a ejecutar Docker en una
mquina virtual.
Magnum: Se encuentra en una fase inicial, no obstante, todo apunta a que
puede ser la solucin definitiva al objetivo planteado.

Para concluir, y como ya se ha expuesto previamente, las tres herramientas


expuestas se encuentran en fases de desarrollo, por lo que su estabilidad de momento
est en entredicho, esto hace que su uso, por lo que he podido comprobar, de momento
se limite a entornos de pruebas. A medida que se vayan corrigiendo errores y problemas
con las nuevas versiones, se podr comprobar si la integracin de Docker en OpenStack
se simplifica de forma que resulte ms ventajoso que utilizarlas por separado.

7 BIBLIOGRAFA

lvarez, C. et al. (2012). Administracin de OpenStack Essex: Instalacin,


configuracin y explotacin. IES Gonzalo Nazareno, IES Los Albares, IES La
Campia, IES Ingeniero de la Cierva.
Joyanes, L. (2011). Computacin en la Nube e innovaciones tecnolgicas. El
nuevo paradigma de la Sociedad del Conocimiento. Universidad Pontificia de
Salamanca.
Schroder, C. (2013). Introduction to OpenStack Part One, From Zero to
Domination. 24 de mayo de 2013. https://www.linux.com/learn/introductionopenstack-part-one-zero-domination
Schroder, C. (2013). Intro to OpenStack Part Two: How to Install and Configure
OpenStack
on
a
Server.
31
de
mayo
de
2013.
https://www.linux.com/learn/intro-openstack-part-two-how-install-andconfigure-openstack-server
Alba, S. (2013). Docker plugin for Heat. Noviembre de 2013.
http://documents.mx/documents/docker-plugin-for-heat.html
Molina Coballes, A. (2013). How to launch an instance on OpenStack (I): Horizon.
20
de
noviembre
de
2013.
https://albertomolina.wordpress.com/2013/11/20/how-to-launch-an-instanceon-openstack-i-horizon/
Molina Coballes, A. (2013). How to launch an instance on OpenStack (I): Horizon.
20
de
noviembre
de
2013.
https://albertomolina.wordpress.com/2013/11/20/how-to-launch-an-instanceon-openstack-ii-openstack-cli/
Srinivasan, A. (2013). Restart services of devstack based openstack. 6 de
diciembre
de
2013.
https://www.ibm.com/developerworks/community/blogs/8160eff1-dedf-408e9395-

34

INTEGRACIN DE DOCKER EN OPENSTACK


DANIEL RODRGUEZ PREZ

9dffeb68749f/entry/working_with_screens_to_restart_service_of_devstack_ba
sed_openstack?lang=es
Cobos Domnguez, A. (2014). Despliegue de arquitectura cloud basada en
OpenStack y su integracin con Chef sobre CentOS. ETS de Ingeniera,
Universidad de Sevilla.
Hibbets, J. (2014). A beginner's guide to understanding OpenStack. 27 de febrero
de 2014. https://opensource.com/business/14/2/openstack-beginners-guide
Romero Snchez, D. (2015). Gua de como instalar Mirantis OpenStack. 26 de
enero de 2015. http://www.dbigcloud.com/cloud-computing/119-guia-decomo-instalar-mirantis-openstack.html
Kellog-Stedman, L. (2015). Installing nova-docker with devstack. 11 de febrero
de 2015. http://blog.oddbit.com/2015/02/11/installing-novadocker-withdevstack/
Derzhavets, B. (2015). Setup the most recent Nova Docker Driver via Devstack on
F21.
26
de
marzo
de
2015.
http://bderzhavets.blogspot.com.es/2015/03/testing-most-recent-novadocker-driver.html
Derzhavets, B. (2015). Setup Nova-Docker driver && Openstack Kilo on Ubuntu
14.04 in devstack environment recoverable between reboots. 28 de abril de
2015. http://bderzhavets.blogspot.com.es/2015/04/setup-nova-docker-driveropenstack-kilo.html
Makam, S. (2015). Openstack and Docker. 14 de junio de 2015.
https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-1/
Makam, S. (2015). Openstack and Docker. 14 de junio de 2015.
https://sreeninet.wordpress.com/2015/06/14/openstack-and-docker-part-2/
Pacheco Mengual, J. (2015). Docker for dummies. 29 de julio de 2015.
https://www.adictosaltrabajo.com/tutoriales/docker-for-dummies/
Molina, A. (2015). OpenStack o Docker?. 2 de octubre de 2015.
https://openwebinars.net/openstack-o-docker/
Morales, M. (2015). Para los que empiezan: crear y ejecutar una imagen propia
en
un
contenedor
Docker.
5
de
noviembre
de
2015.
http://www.javiergarzas.com/2015/11/para-los-que-empiezan-crear-yejecutar-una-imagen-propia-en-un-contenedor-docker-12.html
Team
Containers.
Docker.
N.D.
https://wiki.openstack.org/wiki/Docker#Configure_DevStack_to_use_NovaDocker_.28alternate_post-stack_method.29
Wiki
OpenStack.
Tacker/Installation.
N.D.
https://wiki.openstack.org/wiki/Tacker/Installation
Hoehne, T. (2016). Manage SSH Key Pairs for Cloud Servers with pythonnovaclient. 11 de enero de 2016. https://support.rackspace.com/howto/manage-ssh-key-pairs-for-cloud-servers-with-python-novaclient/

35