Docker como alternativa en virtualización de servidores

25 Ago 2014 en Servidores

La virtualización mediante el concepto de “container” puede ser una alternativa válida a la virtualización en términos de performance, si bien aún su utilización sería aplicable a casos específicos y no es un sustituto completo de la virtualización de servidores basada en Hypervisors. De todos modos, un informe liberado por IBM nos muestra algunas de sus ventajas.

 

Bajo el enfoque más utilizado hasta hoy, el de las máquinas virtuales (VMs) basadas en un hypervisor, tal como los que utilizan ESX de VMware, Hyper-V de Microsoft y algunas opciones open source como Xen y KVM, los hypervisores corren sobre un sistema operativo que hace de host. A su vez, éste requiere de un sistema operativo para sus propias VMs. En cambio, el modelo que utiliza Docker es diferente en cuanto que sólo se requiere el sistema operativo host y las aplicaciones que están “containerizadas” corren sobre ese mismo sistema operativo.

Las ventajas de performance de Docker

Según este informe de IBM, el concepto básico de los containers implica un método de entrega de las aplicaciones muy optimizado. Ese mismo informe indica que esas características de los containers llevan a un aumento notable de la performance. Textualmente, el reporte indica que los resultados obtenidos muestran que los containers alcanzan igual o mayor performance que las VMs en casi todos los casos estudiados. Luego, agrega que tanto las VMs como los containers, requieren de atención en cuanto a tuning cuando se trata de soportar aplicaciones muy intensivas en Input/Output.

Utilizando el indicador Linpack para la medición de performance, los investigadores de IBM midieron el impacto de rendimiento de la virtualización y encontraron que los containers Docker son los claros ganadores. Esos investigadores establecieron que Docker entregó una performance casi similar a la nativa del servidor (bare metal), mientras que el rendimiento de KVM fue de aproximadamente un 50% menos.

En ese mismo informe se expresa que la performance alcanzada fue casi la misma con Linux, que con Docker, lo cual no les sorprendió dada la casi insignificante participación que el sistema operativo tiene durante la ejecución. Al referirse a KVM, encontraron que su rendimiento fue notablemente menor, demostrando el costo que se paga por abstraer o esconder información del sistema durante la ejecución.

Aunque el informe de la investigación realizada por IBM arroja resultados muy positivos para Docker, en ese mismo informe se destaca que existen algunas complicaciones de rendimiento. Por ejemplo, el funcionamiento de NAT (Network Address Translation) de Docker genera sobrecargas cuando se trata de flujos de datos con gran cantidad de paquetes.

El origen de Docker

La tecnología de containers Docker fue presentada en público en un proyecto en marzo de 2013. Desde ese momento alcanzó ya su versión 1.0 y es una tecnología soportada en Red Hat Enterprise Linux 7.

Además, este proyecto ha comenzado a dar origen a nuevas compañías, como Docker Inc, que tiene su proyecto Docker Hub en el que incluye repositorios privados para desarrolladores. El proyecto Linux CoreOS, por su parte, está creando un modelo comercial para la implantacióin de servidores Docker altamente disponibles y en configuraciones cluster en alta escala.

En el ecosistema de Docker ya tenemos a otros proveedores como CenturyLink, que acaba de lanzar su tecnología Panamax Docker y a ClusterHQ, que está creando tecnologías Docker sensibles a datos.

Docker frente a las máquinas virtuales

Cuando se habla de virtualización se habla de VMware, Hyper-V y también de KVM y Xen. Pero cuando se incluye a Docker en la conversación, se está hablando de “containerización,” algo diferente de la virtualización de servidores basada en un hypervisor. Al encapsular una aplicación en un container junto con su entorno operativo, se logran muchos de los mismos beneficios que cuando se descarga una aplicación en una máquina virtual. Los dos pueden ser ubicados en cualquier máquina física adecuada y funcionar sin problemas de dependencias u otros. La diferencia clave entre Docker y VMware, es que Docker es un sistema basado en Linux que hace uso de LXC (Linux Containers), la interfaz que puede permitir al usuario la interacción con dispositivos container del kernel Linux. La meta de LXC es la de crear un entorno lo más parecido posible a una instalación estándar de Linux pero sin la necesidad de tener un kernel por separado. Según consta en el sitio Web de Linuxcontainers.org, “LXC es a menudo considerado como algo que se ubica entre un Chroot con esteroides y una máquina virtual completamente configurada.” Aclaremos que Chroot, para quienes no están familiarizados con UNIX, es la operación que modifica el directorio raíz para que aparezca en un proceso que está ejecutándose y para sus dependencias.

Dado que Docker fue creado a partir de LXC, sólo funciona en entornos Linux como RHEL 7 y Ubuntu 14.04 server. Sólo opera con aplicaciones Linux. No lo hace con aplicaciones que corren con Windows o cualquier otro sistema operativo que puede operar bien con un hypervisor convencional.

Otra de las diferencias que deben ser tenidas en cuenta es que Docker no conforma un sistema completo ya que comparte el kernel Linux que está funcionando como sistema operativo en la máquina física que hace de host. También comparte el kernel con otros containers que estén funcionando en esa máquina host. Las partes compartidas del sistema operativo son de sólo lectura y cada conteiner tiene su propio recurso para lo que es escritura/grabación.

Beneficios de Docker y cuándo conviene utilizarlo

Se puede decir que un beneficio importante de los containers es que en una máquina host se pueden alojar más containers que máquinas virtuales. Esto se explica por el hecho de que cada VM es un sistema auto-contenido, con su propio sistema operativo y hardware virtualizado, con sus propios y únicos recursos asignados a los mismos. Si cada VM tiene un tamaño de 15GB, diez de ellas ocuparán 150 GB en recursos. Pero si se hace lo propio con diez containers del mismo tamaño, o incluso muchos más, no se llegará a usar nada cercano a esos 150 GB en recursos. Esto se debe a todo lo que los containers comparten.

Docker utiliza sólo un sistema operativo o mejor dicho un kernel compartido por todos los containers. No existe el hardware virtualizado, sólo una pequeña aplicación con su entorno operativo. Esto equivale a decir que se pueden procesar muchos más containers en un host, que máquinas virtuales.

Los containers, al compartir el kernel y otros recursos, tienen la ventaja de iniciarse en menos de un segundo, mientras que las VMs requieren del booteo del sistema virtual, que toma minutos. Los containers Docker pueden correr y ser compartidos sobre las nubes públicas AWS (Amazon Web Services) y Azure de Microsoft. Esto es muy útil para los equipos que realizan desarrollos y pruebas.

Containers no son todavía sustitutos de la virtualización de servidores

El título de este párrafo es en sí mismo una noticia positiva para VMware. Todavía no puede considerarse como sustituto pleno de la virtualización de servidores basada en hypervisors. Esto es porque los ambientes virtualizados cuentan ya con una infraestructura de administración muy perfeccionada que permite almacenar, probar y poner en marcha máquinas virtuales. También se las puede migrar entre máquinas físicas sin detención, crear clusters de alta disponibilidad y mucho más. Productos como VCenter de VMware, System Center Virtual Machine Manager de Microsoft y otros productos de terceras partes, tienen mucho tiempo evolucionando.

Todavía en el mercado no hay algo directamente comparable con Docker, si bien Google, Red Hat, CoreOS, IBM y Microsoft trabajan en el sistema de administración de Docker, Kubermetes. Kubermetes podría o no evolucionar rápidamente hacia algo capaz de atender a las necesidades más complejas de los ambientes empresariales.

En conclusión, vale la pena tener en cuenta a la tecnología Docker como alternativa de virtualización.

Este artículo se basó en artículos escritos por los columnistas de Datamation Sean MIchael Kerner y Paul Rubens.