Docker vs Vagrant: diferencias y similitudes y cuándo usar cada uno

Docker-o-Vagrant

Una de las cuestiones más de moda en los últimos meses en el mundillo de los “devops” es, sin duda, el uso de contenedores. Como ya explicamos aquí hace tiempo, la tecnología de contenedores va un paso más allá de la virtualización para ofrecer entornos ligeros de ejecución aislados del sistema operativo subyacente, pero sin toda la carga que conlleva hacer una verdadera virtualización. Consulta el enlace anterior para conocer más detalles.

Una confusión común en estos entornos es la de mezclar tecnologías diferentes bajo el mismo paraguas. Y un ejemplo claro de esto es la confusión que existe entre dos tecnologías muy conocidas relacionadas con todo esto pero que, como veremos, no tienen nada que ver entre sí: Docker y Vagrant.

Como ya explicamos en el artículo enlazado antes, Docker es una tecnología Open Source para crear contenedores ligeros y portables para cualquier aplicación. Lo bueno que tiene es que podemos empaquetar nuestra app en un contenedor Docker desde nuestro portátil y moverla tal cual a un servidor, una máquina virtual o a la nube sin hacer cambio de ningún tipo, asegurándonos que va a funcionar exactamente de la misma manera. Con esto nos olvidamos de dependencias, versiones del sistema operativo y bibliotecas, etc… Se trata de un avance increíble y está llamado a acabar con aquella famosa disculpa de “Pero, ¡en mi máquina funcionaba!”.

Por otro lado Vagrant es otro tipo totalmente diferente de tecnología pero, dado que el resultado es parecido, hay cierta tendencia a confundirlos. Lo que proporciona Vagrant es la creación y gestión sencilla de entornos de trabajo “portables” y replicables que funcionan sobre tecnologías de virtualización conocidas, ofreciendo además un modo de trabajo claro para poder transportar dichos entornos y que funcionen sin problemas en otro lugar: nuevamente en un servidor, la nube, etc… En realidad Vagrant se puede asimilar a un gestor de máquinas virtuales ya que por debajo usa la tecnología de virtualización que nos interese: VMWare, VirtualBox, Hyper-V, Amazon web Services, RackSpace Cloud, Google Compute Engine… Su factor diferencial es lo mucho que facilita la creación de las máquinas virtuales: creas un archivo que describe el tipo de máquina que necesitas, el software que tiene que tener instalado, la forma de acceder a la máquina virtual… Luego abres una línea de comandos, lanzas una  instrucción y en un momento Vagrant te crea el entorno completo que necesites, tal y como lo has descrito. Luego te puedes llevar ese entorno a cualquier otro sistema y usarlo desde allí.

Los resultados son parecidos, pero la tecnología para lograrlo es completamente distinta, y no hay que confundirlas.

Si hay algo que debería haberte quedado claro de todo lo anterior es que son tecnologías diferentes y no son excluyentes entre sí. Es decir, es posible utilizar Vagrant para crear un entorno capaz de ejecutar Docker dentro de éste y así desplegar una aplicación. Es más, Vagrant viene “de serie” con un proveedor para generar contenedores Dockerdirectamente en el sistema operativo actual.

De todos modos hay más diferencias entre ellos que podemos resumir en la siguiente tabla:

Característica Docker Vagrant
Tipo de virtualización: Contenedores Máquina virtual
Nivel de aislamiento: Débil Muy alto
Tiempo de creación: <10 min >10 min
Tamaño del despliegue: Al menos 100MB Al menos 1GB
Tiempo de arranque: Segundos Minutos
Impacto en el sistema: Muy bajo Alto
Garantiza recursos en el S.O.: No
Cuántos se pueden albergar a la vez: >50 <10
Principal ventaja: Rápido, ligero, fácil de aprender Fácil de gestionar, muy bien preparado para entornos de empresa

Ambas herramientas son excelentes para entornos de desarrollo y de pruebas y para pasar a producción entornos completos despreocupándonos por las posibles diferencias o la falta de bibliotecas o servicios necesarios. En ambos casos son mucho más flexibles que una ̶

0;simple” máquina virtual tradicional, y bien utilizados, pueden suponer un ahorro enorme de problemas y de dificultades de gestión. Es por eso que todos los grandes actores de la industria están apostando por ellos, especialmente por Docker, e incluso Microsoft ofrece soporte para el producto dentro de sus sistemas operativos y dentro de Azure (hay que pensar que originalmente Docker solo funcionaba en Linux).

via: http://www.campusmvp.es/recursos/post/Docker-vs-Vagrant-diferencias-y-similitudes-y-cuando-usar-cada-uno.aspx

Earn Your Microsoft Certified Specialist: Server Virtualization Title with a Free Exam

Are you responsible for designing, implementing, and managing a virtualization infrastructure? Looking for a way to validates your skills on current virtualization technologies? Wondering how you can improve the trajectory of your career? Now is your chance to do just that, with free online training and an exam voucher from Microsoft!

What you get: The title of Microsoft Certified Specialist: Server Virtualization with Windows Server Hyper-V and System Center

How you will get it:

Still thinking about it? Here’s Chris Harney, president and founder of The Virtualization Technology Users Group, discussing why people need to be able to speak more than one virtualization language, and why it’s good for your career.

http://youtu.be/E0SwbHXH9ac

*The fine print: The number of free exams is limited, so be sure to schedule your appointment to lock-in your free exam. Vouchers expire and all exams must be taken by June 30, 2014.

via: http://borntolearn.mslearn.net/btl/b/weblog/archive/2013/12/17/earn-your-microsoft-certified-specialist-server-virtualization-title-with-a-free-exam.aspx