Máquinas Virtuales vs. Contenedores Docker: ¿Cuál es la diferencia en su rendimiento

Virtual Machines vs Docker Containers

Durante muchos años empezamos a buscar la “virtualización” de computadoras, es decir, tener la posibilidad de poder utilizar diferentes computadoras “virtuales” dentro de una misma computadora física. Que se realiza con software que simula tener más de un entorno informático, con su propio sistema operativo, programas, procesos y archivos. Ahora existe la posibilidad de poder cambiar de una sola computadora física, incluso de una computadora virtual a otro para realizar un proceso específico. Esto trajo grandes ventajas no sólo técnicas, sino también prácticas y económicas.

Pero esta tecnología que nos permite trabajar con múltiples máquinas virtuales (VM’s) no se ha detenido ahí, sino que ha habido otras nuevas tecnologías que también funcionan en el entorno virtual pero de forma diferente. Hablemos también de los contenedores.

¿Cómo funcionan exactamente una máquina virtual y un contenedor? ¿En qué se diferencian y qué ventajas tiene uno sobre el otro? Hablemos primero de las máquinas virtuales.

Máquinas Virtuales

Una máquina virtual es aquella que emula a una computadora completa. En palabras muy sencillas, se trata de un software que puede hacerse pasar por otro dispositivo -como un PC- de tal forma que se puede ejecutar otro sistema operativo dentro de él. Tiene su propio disco duro, memoria, tarjeta gráfica y otros componentes de hardware, aunque todos ellos son virtuales.

Cuando decimos que sus componentes son virtuales no significa que no existan físicamente. De hecho, los recursos de hardware instalados en la computadora física se distribuirán en las máquinas virtuales disponibles. Por ejemplo, supongamos que tenemos un PC de escritorio con 8 GB de RAM y 500 GB de disco duro. Ahora imagina que hemos creado una máquina virtual dentro de nuestro sistema operativo de PC y que queremos asignar RAM y espacio en el disco duro. Tal vez podamos asignar 4Gb de RAM y 100Gb de disco duro. Eso dejaría nuestro PC “host” con sólo 6Gb de RAM y 400 Gb de Disco Duro. Esto es muy beneficioso porque podemos trabajar con diferentes máquinas virtuales para diferentes propósitos e incluso con diferentes sistemas operativos, aunque no sean los mismos que el PC físico. Como por ejemplo, podemos tener una máquina virtual con Linux ejecutándose en una computadora con Windows. La siguiente imagen muestra un ejemplo de cómo se configuran 2 máquinas virtuales en un PC:

Esta tecnología ha sido muy beneficiosa, especialmente en entornos de servidores por las siguientes razones:

  • Poder probar otros sistemas operativos: La instalación de un sistema operativo en su PC es un proceso largo, aburrido y difícil de revertir si no está satisfecho con los resultados. Por lo tanto, cuando hay una nueva versión de Windows, es más fácil y seguro probarlo instalándolo en una máquina virtual que en el disco duro. Si algo sale mal, lo borras y se acabó, sin arriesgarte a perder mucho tiempo o tus datos.
  • Puede ejecutar programas antiguos. ¿Qué sucede cuando su negocio depende de un software que no ha sido actualizado en 20 años? Si no puede modernizar el software, no tiene más remedio que seguir cargándolo en un sistema operativo de su tiempo. Con una máquina virtual, este viejo sistema puede funcionar con el hardware actual en lugar de con una computadora obsoleta.
  • Ser capaz de utilizar aplicaciones disponibles para otros sistemas. También es posible que necesite una máquina virtual para ejecutar aplicaciones que hayan sido desarrolladas para un sistema operativo diferente al que está utilizando. Por ejemplo, para usar una aplicación Windows en MAC OS, o viceversa.
  • Dado que los servidores virtuales no son una máquina física, puede ampliar su capacidad en cualquier momento y utilizar más recursos (RAM, HDD, etc.). De esta manera, el cliente puede adaptar su servidor en caso de que tenga que alojar más sitios web o aumentar su tráfico.
  • Ser capaz de ahorrar recursos. Los gastos se reducen en más hardware, en computadoras y servidores. Así como en energía eléctrica y tiempo de mantenimiento.
  • Copias de seguridad y recuperación de desastres: Los desastres tales como fugas, inundaciones, escasez de energía, ciberataques o tormentas eléctricas son inesperados y graves, ya que pueden ocasionar daños totales al sistema operativo o la pérdida de datos. Es mucho más fácil hacer copias de seguridad y restaurar las máquinas virtuales que están instaladas en un servidor físico en la sala de servidores que tendría que estar ensamblando y configurando diferentes servidores físicos.

En el caso de los servidores, es posible que ni siquiera necesitemos un sistema operativo, sino que pongamos el software VM Host directamente y creemos las máquinas virtuales allí mismo, como se puede ver en la siguiente imagen:

Contenedores Docker

Docker es una plataforma de software de código abierto donde podemos crear “contenedores”, cuya definición simple es una máquina virtual más ligera, lo que significa que es menos exigente con los recursos de la computadora física donde se ejecutan. Esto ha sido especialmente útil para los desarrolladores que quieren probar o utilizar sus aplicaciones en cualquier entorno. Algunos de los beneficios de los contenedores Docker son:

  • Portabilidad: El contenedor Docker puede desplegarse en cualquier otro sistema (que soporte esta tecnología), lo que nos ahorra tener que instalar en este nuevo entorno todas aquellas aplicaciones que normalmente utilizamos.
  • Ligereza: El tamaño de los contenedores no tiene comparación con otros sistemas de virtualización convencionales. Por ejemplo, VirtualBox y cualquier distribución de Linux tendrá alrededor de 1Gb con sólo hacer la instalación limpia, por lo que la reducción de espacio es sustancial.
  • Self-sufficiency: Un contenedor Docker no incluye todo el sistema operativo, sino sólo las bibliotecas, los archivos y la configuración necesarios para su ejecución. También se encarga de la gestión de los contenedores y de las aplicaciones de los mismos.

Mientras que en las máquinas virtuales tenemos software de host de máquinas virtuales (Hypervisor) en contenedores, tenemos un motor de contenedores que está acostumbrado a ejecutar y terminar el contenido. El siguiente diagrama es una representación visual de la estructura de los contenedores Dockers:

Otra ventaja de los contenedores es que pueden ser utilizados junto con máquinas virtuales sin conflictos, teniendo el doble de beneficios como podemos ver en este diagrama:

En conclusión, como podemos ver, hay beneficios comunes y diferentes de las máquinas virtuales y los contenedores. Si usted es un servidor o administrador de red, las VMs serán lo suficientemente beneficiosas para ese propósito. Pero si le gustan los DevOps puede que quiera ir con Docker Containers. E incluso por qué no ir con ambos y obtener lo mejor de ambos mundos.


Related Posts