Contenedores Docker Vs Máquinas Virtuales.

Cada vez se desarrollan menos aplicaciones monolíticas y más basadas en módulos o en microservicios, que permiten un desarrollo más ágil, rápido y a la vez portable. En la actualidad la tecnología Docker está ayudando a las empresas a ser más ágiles y competitivas en su transformación digital

Algunos comparan los contenedores con una versión más ligera de las máquinas virtuales, lo cual es claramente un error por ser dos tecnologías diferentes, que pretenden resolver problemas totalmente distintos: las máquinas virtuales nacieron para resolver un problema de utilización en los servidores y fundamentalmente abstraen el hardware del sistema operativo, creando un entorno aislado para los sistemas operativos y aplicaciones. De esta manera es posible tener en un único servidor físico “muchas” máquinas virtuales.

Por otro lado, los contenedores nacieron para abstraer las aplicaciones del sistema operativo, de esta forma se pretende hacer las aplicaciones más portables.

Si tenemos que compararlos, los contenedores pueden llegar a ser más eficientes que las máquinas virtuales en una o varias características:

  • Se pueden “arrancar” en fracciones de segundo, en lugar de minutos.
  • Pueden ocupar MB en lugar de GB en disco.
  • Se pueden ejecutar de 10 a 100 veces más contenedores que máquinas virtuales en el mismo equipo.

Dicho todo esto, también es común ver que se tengan soluciones híbridas donde se desplieguen contenedores dentro de máquinas virtuales.

Vemos que los contenedores están transformando las operaciones de los DevOps como una herramienta importante en el mundo del desarrollo web. Los casos de uso para los contenedores de Docker dentro del ámbito de DevOps son muchos, ejecutar aplicaciones en un contenedor y luego desplegar en cualquier lugar (la nube, en las instalaciones o cualquier distribución de Linux) es una realidad ahora.

Sin embargo es difícil que, al menos en el corto plazo, la mayoría de los usuarios dejen de usar soluciones de virtualización tradicionales, ya que puedes emplear una u otra tecnología, dependiendo del problema que quieras solucionar.