Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

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!". (Si te interesa aprender Docker, ya sabes...)

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 Docker directamente 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: Alto 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 "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).

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: Herramientas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (2) -

Cristian Buitrago
Cristian Buitrago

No es cierto que Vagrant sea de fácil gestión: De hecho su configuración y puesta a punto es extermadamente dificil según el sistema operativo donde se instale y la maquina virtual a realizar. Es cierto que ambas herramientas son diferentes a nivel tecnológico, pero Vagrant es más bien un gestor de máquinas Virtuales(y de pésima calidad). Puedes lograr los mismos resultados con Docker. Incluso combinandola con Chef, se requiere de un dominio de herramienta increible.

Responder

Héctor Fernández
Héctor Fernández

Siempre es bueno complicar las cosas usando vagrant (?)

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.