Docker vs Vagrant, diferencias y similitudes

Una de las cuestiones más de moda en los últimos meses en el mundo devops es el uso de contenedores, 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, pero sin toda la carga que conlleva hacer una verdadera virtualización.

Una confusión común en estos entornos es la de mezclar tecnologías diferentes, y un ejemplo claro de esto es la confusión que hay entre dos tecnologías muy conocidas relacionadas con todo esto las cuales son: Docker y Vagrant.

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 la versión del sistema operativo, bibliotecas y demas dependencias.

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. 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

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 Docker directamente en el sistema operativo actual.

Otras diferencias que podemos mencionar son:

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 sin la preocupación por las posibles diferencias o la falta de bibliotecas o servicios necesarios.

Mas información en Docker y Vagrant

Share on FacebookTweet about this on TwitterShare on Google+

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *