Contenedor vs. Hipervisor: ¿Cuál es la diferencia?

Contenedor vs. Hipervisor: ¿Cuál es la diferencia? Desde el modelo OSI hasta la programación, la comprensión de la tecnología a menudo se reduce a comprender las diferentes capas de abstracción . Ese sentimiento también es válido para las máquinas virtuales (VM) y los contenedores.

De hecho, enfocarse en lo que las máquinas virtuales y los contenedores extraen puede ayudar a que los contenedores conceptualmente «hagan clic» para usted. En resumen:

  • Las máquinas virtuales y los hipervisores abstraen el hardware y le permiten ejecutar sistemas operativos
  • Los contenedores (técnicamente motores de contenedores) abstraen los sistemas operativos y le permiten ejecutar aplicaciones

Por supuesto, esa es una explicación simplificada y de alto nivel. Para comprender qué herramienta es la correcta en un caso de uso dado, solo piense en lo que hace cada tecnología. Aquí, exploraremos el tema con mayor profundidad y le brindaremos un curso intensivo sobre máquinas virtuales versus contenedores.

Máquinas virtuales explicadas

VMware proporciona una de las definiciones de máquinas virtuales más elegantes cuando describen una VM como «una computadora de software». Hay dos formas básicas de ejecutar máquinas virtuales: mediante la virtualización «Tipo 1» o la virtualización «Tipo 2«.

Tipo 1

En entornos de producción profesional, es mucho más probable que encuentre la virtualización de Tipo 1. Con la virtualización de Tipo 1, se instala un sistema operativo liviano conocido como hipervisor en una computadora o servidor físico. La caja física a menudo se llama «metal desnudo» y los hipervisores Tipo 1 a menudo se llaman «hipervisores de metal desnudo». Ejemplos comunes de hipervisores de metal desnudo son VMware ESXi , KVM (máquina virtual basada en kernel) e HyperV de Microsoft .

Una vez que instale un hipervisor de metal desnudo, puede instalar varios sistemas operativos «tradicionales» encima. Por ejemplo, con ESXi instalado, puede ejecutar Windows Server 2016, CentOS 7.6 y Ubuntu 18.04 en el mismo hardware. ESXi proporciona computación virtual, almacenamiento y memoria a los sistemas operativos.

Los sistemas operativos usan estos recursos «virtuales» tal como lo harían con los recursos físicos. Esta es la abstracción del hardware al que me referí anteriormente. Desde aquí, puede instalar aplicaciones y servicios (por ejemplo, Active Directory o un servidor web) en los sistemas operativos.

Tipo 2

Los hipervisores tipo 2, también conocidos como «hipervisores alojados», funcionan de manera un poco diferente. A diferencia de la instalación sobre hardware desnudo, se instalan sobre un sistema operativo estándar. VirtualBox de Oracle y VMware Player de VMware son ejemplos populares de hipervisores alojados.

Con un hipervisor alojado, puede ejecutar un segundo sistema operativo aislado desde su sistema operativo principal. Suponga que desea ejecutar Linux Mint, pero no desea desinstalar Windows de su PC o usar el arranque dual. Con un hipervisor alojado, puede ejecutar una instancia aislada de Linux Mint en su PC con Windows.

Nota al margen: para aquellos familiarizados con los sistemas operativos Windows Server, describir HyperV como un hipervisor de Tipo 1 puede ser confuso. Parece que HyperV se ejecuta sobre otro sistema operativo, lo que lo convertiría en un Tipo 2. Sin embargo, cuando se llega a los detalles, HyperV se ejecuta debajo del sistema operativo y accede al hardware. Las respuestas en esta publicación de SuperUser hacen un buen trabajo explicando los detalles.

Beneficios de las máquinas virtuales

Ahora que hemos establecido qué son las máquinas virtuales , podemos sumergirnos en los beneficios. En un nivel superior, los principales beneficios de la virtualización (en relación con la ejecución en metal desnudo) son:

  • Uso más eficiente del hardware . Poder virtualizar servidores significa poder ejecutar más sistemas operativos en su hardware. Esto conduce a eficiencias en todo, desde el mantenimiento hasta los costos de energía y el espacio en rack para la refrigeración. A gran escala, las eficiencias de la virtualización han ayudado a contribuir a las economías de escala asociadas con la nube.
  • Gestión y aprovisionamiento más fácil y rápido . Es mucho más fácil y rápido activar y desactivar servidores virtuales que suministrar hardware nuevo. Crear copias de seguridad e instantáneas del servidor también es mucho más simple.
  • Mejora de la recuperación ante desastres . Debido a que es fácil crear copias de seguridad y recuperar imágenes instantáneas, la recuperación ante desastres es más fácil y rápida.
  • Pruebas simplificadas . Probar en producción no es una gran idea. Dedicar un servidor a las pruebas no es demasiado eficiente si tiene que probar muchos sistemas operativos diferentes. Con las máquinas virtuales, puede ejecutar un sistema operativo aislado lógicamente que le permite realizar pruebas con relativa libertad.

Contenedores explicados

Probablemente comprenda que los contenedores son una gran parte de DevOps, el software nativo de la nube y los microservicios. Dada la popularidad de esas cosas, probablemente también sepa que los contenedores son una parte importante de la TI moderna.

Sin embargo, una vez que comprenda las máquinas virtuales, puede tener dificultades para conceptualizar por qué los contenedores son útiles. Las máquinas virtuales abstraen el hardware, por lo que es difícil entender por qué necesitamos más abstracción. Afortunadamente, una vez que te sumerges en cómo funcionan , comienza a tener sentido.

Los contenedores empaquetan una aplicación y todas las dependencias subyacentes juntas. Este paquete contenedor se puede ejecutar en cualquier lugar donde esté instalado un motor contenedor.

Como podemos ver, los contenedores se encuentran en la parte superior de un motor de contenedores (en este ejemplo, LXC ), que se encuentra en un sistema operativo host. El sistema operativo host puede ser una máquina virtual o ejecutarse en el metal desnudo. Esta configuración le permite ejecutar múltiples aplicaciones y servicios aislados lógicamente de manera eficiente. Una cosa importante a tener en cuenta es que el núcleo subyacente del sistema operativo host es compartido por todos los contenedores.

Si bien los contenedores se usan generalmente con los sistemas operativos * nix, también están disponibles para Windows. Si está buscando sumergirse en contenedores y Windows, consulte nuestra capacitación Implementar contenedores de Windows .

Beneficios de los contenedores

Descubrirá que los contenedores han crecido en popularidad porque contribuyen en gran medida a habilitar las metodologías DevOps. Las principales ventajas de los contenedores (en relación con las máquinas virtuales) incluyen:

Los contenedores son livianos . Los contenedores usan solo los binarios y bibliotecas que necesitan. Esto significa que arrancan significativamente más rápido que las máquinas virtuales. En el mundo de las aplicaciones web, los tiempos de arranque en segundos frente a los tiempos de arranque en minutos pueden marcar una gran diferencia. Ser más liviano también significa menos hardware y menos sistemas operativos necesarios.

Los contenedores son portátiles . En cualquier lugar donde pueda ejecutar un motor de contenedor, puede ejecutar un contenedor. Lo que esto significa es que los argumentos sobre un entorno que es la causa de un problema con una aplicación deben reducirse. Si se ejecutó para el desarrollo en su contenedor, debería ejecutarse para QA, y debería ejecutarse en producción.

Los contenedores permiten microservicios . En resumen, los microservicios son pequeños servicios que se comunican entre sí para crear una aplicación o servicio más grande. Al desacoplar las pruebas de microservicios individuales se vuelve más fácil, se reducen los puntos únicos de falla y se aumenta la velocidad de desarrollo.

Entendiendo la jerga de contenedores

Si eres nuevo en los contenedores, hay una serie de términos nuevos que debes aprender más temprano que tarde. Estos son algunos de los más comunes:

Contenedor . Para citar a Docker, un contenedor es «una unidad de software estandarizada». Incluye todas las dependencias que necesita una aplicación. Un contenedor requiere un motor de contenedor para funcionar.

Motor contenedor . Los motores de contenedores son los que permiten que los contenedores funcionen. Ejemplos de motores de contenedores incluyen Docker y LXC . Para obtener más información sobre las tuercas y tornillos de los motores de contenedores, consulte Entonces, ¿qué hace realmente un motor de contenedores de todos modos? en CrunchTools.

Cluster . Un grupo de contenedores gestionados por una máquina «maestra».

Vainas . Grupos de contenedores dentro de un clúster que cumplen un propósito determinado y comparten recursos. Consulte este blog de Google Cloud Platform (GCP) para una inmersión más profunda en pods y clusters.

Kubernetes . También conocido como K8, Kubernetes es una herramienta de gestión y organización de contenedores. Permite la gestión de grupos de contenedores. Las alternativas a Kubernetes incluyen Docker Swarm y Apache Mesos.

Estas definiciones solo rascan la superficie y hay mucho más que aprender. Sin embargo, comprender que los contenedores son la unidad base, los clústeres y las vainas son grupos de contenedores, y las herramientas como K8 permiten la administración es un buen punto de partida.

¿Cuándo debe usar contenedores versus máquinas virtuales?

En este punto, probablemente te hayas dado cuenta de que los contenedores y las máquinas virtuales no son mutuamente excluyentes. Es posible que desee ejecutarlos juntos en algunos casos. En otros, puede tener sentido usar uno u otro. Aquí revisaremos las ventajas comparativas para esos casos.

A menudo tiene sentido usar máquinas virtuales para casos de uso como:

  • Mantener consistencia y compatibilidad en entornos existentes . En pocas palabras, muchos entornos simplemente no usan contenedores en la actualidad. Los servidores se ejecutan como máquinas virtuales y puede que no haya razones convincentes para alejarse de eso. En esos entornos, impulsar un cambio a la contenedorización podría no tener sentido comercial todavía.
  • Ejecutando múltiples aplicaciones juntas . A veces, simplemente necesita un servidor o computadora para ejecutar múltiples aplicaciones. Las máquinas virtuales satisfacen esta necesidad muy bien.
  • Asegurando un completo aislamiento lógico . Recuerde, todos los contenedores instalados en un sistema operativo host determinado comparten ese núcleo. Desde una perspectiva de seguridad, no están tan lógicamente aislados como las máquinas virtuales. Si el aislamiento es importante y está eligiendo entre máquinas virtuales y contenedores, las máquinas virtuales pueden ser la opción correcta.

Los contenedores pueden ser útiles para:

  • Habilitación de microservicios y DevOps. Los contenedores son el núcleo de DevOps y microservicios. Si se encuentra en un entorno que abarca las metodologías DevOps, los contenedores a menudo pueden ayudar. Esto se debe a que son portátiles y rápidos.
  • Aplicaciones web: muchas aplicaciones web se están moviendo hacia un enfoque de microservicios. Si está creando aplicaciones web, pasar a una arquitectura de microservicios que aprovecha los contenedores tiene muchas ventajas.
  • Entornos donde la velocidad es imprescindible. En términos generales, los contenedores se inician significativamente más rápido que las máquinas virtuales. Esto permite pruebas y recuperación más rápidas cuando se requiere un reinicio. Si todo lo demás es igual y necesitas algo rápido y liviano, ve con un contenedor.

Pensamientos finales

Como hemos visto, los contenedores y las máquinas virtuales son tecnologías que resuelven dos problemas diferentes. Si necesita una forma de ejecutar un sistema operativo completo, una VM tiene sentido. Si necesita brindar un servicio de manera liviana y portátil, un contenedor puede ser una buena opción.

Recuerde, la tecnología subyacente es solo un medio para un fin. Como profesional de TI, depende de usted elegir la herramienta adecuada para el trabajo. Cuanto mejor comprenda las tecnologías subyacentes, mejor podrá elegir una solución que tenga sentido.

Leer también:Virtualización de un data center o centro de datos, ¿qué es?; Qué es la virtualización de servidores; ¿Qué es la infraestructura en la nube?