lunes, 6 de junio de 2016

¿CÚAL ES LA DIFERENCIA ENTRE DOCKER Y UNA MÁQUINA VIRTUAL?

Los contenedores tienen beneficios de aislamiento y asignación de recursos similares a las máquinas virtuales , pero con un enfoque arquitectónico diferente que les permite ser mucho más portátiles y eficientes.
Se trata de un choque de titanes de virtualización, por un lado tenemos la tecnología de máquinas virtuales, y por otro la tecnología de contenedores. En realidad, ambas tecnologías son complementarias y tienen cualidades distintas y pueden ser utilizadas en tándem para obtener un beneficio combinado.
Los contenedores proporcionan aislamiento de procesos a nivel de sistema operativo, mientras que las máquinas virtuales ofrecen el aislamiento en la capa de abstracción de hardware, es decir, la virtualización de hardware. Así que en casos de uso IaaS (Infraestructura como servicio) la máquina virtual es el ajuste ideal, mientras que los contenedores son los más adecuados para garantizar la portabilidad del software y modular su ensamblaje y transporte. Una vez más, las dos tecnologías se pueden utilizar en combinación con otras para obtener beneficios adicionales, por ejemplo, los contenedores Docker se pueden crear dentro de las máquinas virtuales para hacer una solución ultra-portátil.
Máquina Virtual
La diferencia, sin duda es tanto conceptual como de peso, sobre todo de peso. Los sistemas más extendidos de virtualización -aunque con numerosas virtudes- tienen un problema en cuanto a la portabilidad, puesto que un snapshot incluye tanto el Sistema Operativo (guest/invitado) como las librerías y aplicaciones. Esto, en algunas ocasiones puede representar una ventaja, pero cuando se trata de replicar entornos que debemos transmitir por red, por ejemplo, desde un entorno local a un CPD, resulta tedioso, y más si tenemos que repetirlo con frecuencia.
Docker
El notable éxito de esta tecnología tiene como característica principal la ligereza, y por extensión, la portabilidad. Los contenedores (dockers) consisten en una copia de las configuraciones, las librerías/binarios y la aplicación o aplicaciones. Evitamos todo el peso del sistema, sólo nos tenemos que asegurar que el Sistema de destino es compatible con Docker. Se pueden considerar los dockers como máquinas virtuales ligeras.
Entrando un poquito más en materia, y estudiando la tecnología, vemos que en realidad Docker no es un sistema de virtualización al uso, está basado en LXC (LinuX  Containers) que a su vez es un método para ejecutar entornos y asignación de recursos (cpu, memoria, i/o) mediante una característica del kernel llamada cgroups.
Básicamente, un Docker es un contenedor donde se encuentra todo lo que una aplicación necesita para funcionar sin necesidad de acceder a recursos externos, con lo cual controlamos mucho mejor las configuraciones y evitamos que algún otro programa actualice o elimine una librería que inconscientemente, afecte en la ejecución y estabilidad de nuestro programa. Asimismo, la portabilidad se facilita porque el engine de Docker se encarga de su integridad y de la gestión de recursos.

No hay comentarios:

Publicar un comentario