GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Contenedores frente a máquinas virtuales (VM):¿cuál es la diferencia?

Introducción

Ambas máquinas virtuales y contenedores se utilizan para crear entornos virtuales aislados para desarrollar y probar aplicaciones o software. La pregunta es en qué se diferencian.

Este artículo examina los dos conceptos para ayudar a comprender la diferencia entre un contenedor y una máquina virtual. Define contenedores y máquinas virtuales por separado, así como en paralelo, para ver qué diferencia a uno de otro.

¿Qué son las máquinas virtuales (VM)?

Una máquina virtual (VM) es un sistema operativo que comparte los recursos físicos de un servidor. Es un invitado en el hardware del host, por lo que también se le llama máquina invitada. .

Hay varias capas que componen una máquina virtual. La capa que permite la virtualización es el hipervisor . Un hipervisor es un software que virtualiza el servidor.

Cómo funciona una máquina virtual

Todo lo necesario para ejecutar una aplicación está contenido dentro de la máquina virtual:el hardware virtualizado, un sistema operativo y los archivos binarios y bibliotecas necesarios. Por lo tanto, las máquinas virtuales tienen su propia infraestructura y son autónomas.

Cada máquina virtual está completamente aislada del sistema operativo host. Además, requiere su propio sistema operativo, que puede ser diferente del sistema operativo del host. Cada uno tiene sus propios archivos binarios, bibliotecas y aplicaciones.

Monitor de máquina virtual (VMM) :otro nombre para el hipervisor

Máquina anfitriona :el hardware en el que está instalada la VM

Invitado máquina :otro nombre para la máquina virtual

Máquina virtual:PROS

Las máquinas virtuales reducen los gastos . En lugar de ejecutar una aplicación en un solo servidor, una máquina virtual permite utilizar un recurso físico para hacer el trabajo de muchos. Por lo tanto, no tiene que comprar, mantener ni almacenar pilas enumerables de servidores.

Debido a que hay una máquina host, le permite administrar eficientemente todos los entornos virtuales con el poder centralizado del hipervisor. Estos sistemas están completamente separados entre sí, lo que significa que puede instalar entornos de múltiples sistemas .

Lo que es más importante, una máquina virtual está aislada del sistema operativo host y es un seguro lugar para experimentar y desarrollar aplicaciones.

Máquina Virtual:CONTRAS

Las máquinas virtuales pueden consumir muchos recursos del sistema de la máquina host, con un tamaño de muchos GB. Ejecutar una sola aplicación en un servidor virtual significa ejecutar una copia de un sistema operativo, así como una copia virtual de todo el hardware necesario para que el sistema funcione. Esto suma rápidamente una gran cantidad de ciclos de RAM y CPU.

El proceso de reubicar una aplicación que se ejecuta en una máquina virtual también puede ser complicado ya que siempre está adjunto al sistema operativo. Por lo tanto, debe migrar la aplicación y el sistema operativo con ella. Además, al crear una máquina virtual, el hipervisor asigna recursos de hardware dedicados a la VM.

Una máquina virtual rara vez utiliza todos los recursos disponibles, lo que puede dificultar la planificación y la distribución. Eso sigue siendo económico en comparación con ejecutar computadoras reales separadas.

Proveedores de máquinas virtuales populares:

  • VMware vSphere
  • Caja virtual
  • Zen
  • Híper-V
  • KVM

¿Qué es un Contenedor?

Un contenedor es un entorno que ejecuta una aplicación que no depende del sistema operativo. Aísla la aplicación del host virtualizándola. Esto permite a los usuarios crear múltiples cargas de trabajo en una sola instancia de sistema operativo.

El núcleo del sistema operativo host satisface las necesidades de ejecutar diferentes funciones de una aplicación, separadas en contenedores. Cada contenedor ejecuta tareas aisladas. No puede dañar la máquina host ni entrar en conflicto con otras aplicaciones que se ejecutan en contenedores separados.

¿Cómo funcionan los contenedores?

Cuando trabaje dentro de un contenedor, puede crear una plantilla de un entorno que necesite. Básicamente, el contenedor ejecuta una instantánea del sistema en un momento determinado, lo que brinda consistencia en el comportamiento de una aplicación.

El contenedor comparte el núcleo del host para ejecutar todas las aplicaciones individuales dentro del contenedor. Los únicos elementos que requiere cada contenedor son contenedores, bibliotecas y otros componentes de tiempo de ejecución.

Contenedor:PROS

Los contenedores pueden ser tan pequeños como 10 MB y puede limitar fácilmente su uso de memoria y CPU. Esto hace que los contenedores sean notablemente ligeros y rápido para iniciar a diferencia de la implementación de máquinas virtuales, donde se debe implementar todo el sistema operativo.
Debido a su tamaño, puede escalar rápidamente dentro y fuera de los contenedores y agregue contenedores idénticos.

Además, los contenedores son excelentes para la integración continua y el despliegue continuo. (CI/CD) implementación. Fomentan el desarrollo colaborativo al distribuir y fusionar imágenes entre los desarrolladores.

Contenedor:CONTRAS

Un contenedor utiliza el kernel del sistema operativo host y tiene dependencias del sistema operativo. Por lo tanto, los contenedores pueden diferir del sistema operativo subyacente por dependencia, pero no por tipo. El núcleo del host limita el uso de otros sistemas operativos .

Los contenedores aún no ofrecen la misma seguridad y estabilidad que las máquinas virtuales pueden. Dado que comparten el kernel del host, no pueden estar tan aislados como una máquina virtual. En consecuencia, los contenedores están aislados a nivel de proceso y un contenedor puede afectar a otros al comprometer la estabilidad del kernel.

Además, una vez que un contenedor realiza su tarea, se apaga y elimina todos los datos que contiene. Si desea que los datos permanezcan en el servidor host, debe guardarlos mediante Volúmenes de datos. Esto requiere configuración y aprovisionamiento manual en el host.

Proveedores de contenedores populares:

  • Docker
  • AWS
  • LXD
  • Contenedores Java
  • Contenedores Hyper-V
  • Contenedores de Windows Server

Cómo elegir máquinas virtuales frente a contenedores

Decidir si optar por máquinas virtuales o contenedores depende del trabajo que desee que realice su entorno virtual.

Las máquinas virtuales son una mejor solución si necesita:

  1. Administre una variedad de sistemas operativos
  2. Administra varias aplicaciones en un solo servidor
  3. Ejecute una aplicación que requiera todos los recursos y funcionalidades de un sistema operativo
  4. Asegure el aislamiento y la seguridad total

Los contenedores son adecuados si necesita:

  1. Maximice la cantidad de aplicaciones que se ejecutan en un servidor
  2. Implemente múltiples instancias de una sola aplicación
  3. Tenga un sistema liviano que se inicie rápidamente
  4. Desarrolle una aplicación que se ejecute en cualquier infraestructura subyacente

Las máquinas virtuales se usan comúnmente para aplicaciones exigentes, infraestructura de red y aplicaciones que consumirán la mayoría de los recursos de la máquina virtual.

Los contenedores se utilizan comúnmente para web, aplicaciones y servicios de almacenamiento en caché, demonios de red y pequeñas bases de datos.


Ubuntu
  1. Cómo eliminar máquinas virtuales basadas en KVM en Redhat Linux

  2. ¿Cuál es la diferencia entre los contenedores LXC, LXD y Docker?

  3. ¿Cuál es la diferencia entre los métodos Tasksel y Normal?

  4. ¿Cómo acceder a Internet desde una máquina virtual en Gnome Boxes?

  5. Cómo iniciar/detener máquinas virtuales en RedHat Virtualization

Conmutación por error frente a Conmutación por recuperación:¿Cuál es la diferencia?

Cómo encontrar la dirección IP de una máquina virtual KVM

Cómo crear una máquina virtual en KVM en la línea de comandos

Cómo crear máquinas virtuales en KVM usando Virt-Manager

Cómo instalar máquinas virtuales optimizadas y configuradas para el entorno Red Hat Virtualization

Cómo migrar máquinas virtuales de un host a otro en el entorno de virtualización de Red Hat