Post Top Ad

Your Ad Spot

martes, 18 de agosto de 2020

Docker Vs Virtual Machine: comprenda las diferencias

Máquinas virtuales y contenedores Docker, ambos son más que suficientes para aprovechar al máximo los recursos informáticos disponibles en hardware y software. Los contenedores Docker son algo nuevos en el bloque, pero las máquinas virtuales o VM han estado allí y seguirán siendo populares en los centros de datos de todos los tamaños. Si está buscando la mejor solución para ejecutar sus servicios en la nube, se recomienda que primero comprenda estas tecnologías de virtualización. Conozca las diferencias entre los dos, la mejor manera en que se pueden usar y las capacidades que posee cada uno.
La mayoría de las organizaciones se han trasladado o tienen previsto pasar de los servicios informáticos en las instalaciones a los servicios informáticos en la nube. La computación en la nube le permite acceder a una gran cantidad de recursos configurables que se pueden compartir, por ejemplo: redes de computadoras, servidores, almacenamiento, aplicaciones y servicios. Para la implementación de la computación en la nube de forma tradicional, se utilizan máquinas virtuales. Sin embargo, en estos días los contenedores Docker han ganado mucha popularidad debido a sus características, además de que los Dockers se consideran livianos en comparación con las máquinas virtuales que son más pesadas.
Según los informes , habrá un aumento en el  uso de contenedores de aplicación del 40% a finales del año 2020 . Los contenedores Docker han ganado mucha popularidad ya que facilitan un desarrollo rápido y ágil. Pero surge la pregunta: ¿en qué se diferencian los contenedores Docker de las máquinas virtuales? Lo más importante que debe saber es que los contenedores de Docker no son máquinas virtuales o máquinas virtuales ligeras o máquinas virtuales reducidas. Comparemos los dos y entendamos las principales diferencias.

¿Qué es exactamente una máquina virtual?

Se dice que las máquinas virtuales nacieron cuando se incrementó la potencia y la capacidad de procesamiento del servidor, pero las aplicaciones bare metal no pudieron explotar la nueva abundancia de recursos. Las máquinas virtuales se construyeron ejecutando software sobre servidores físicos para cumplir con los requisitos de un sistema de hardware en particular. Un monitor de máquina virtual o hipervisor es un firmware, software o hardware que ayuda a crear una máquina virtual y la ejecuta. Es un componente necesario para virtualizar el servidor y se encuentra entre la máquina virtual y el hardware. Dado que los servicios de computación en la nube están disponibles y la virtualización es asequible, muchos departamentos de TI, tanto grandes como pequeños, han adaptado las máquinas virtuales para reducir los costos y aumentar la eficiencia.

Comprensión de las máquinas virtualesMáquina virtual

Entendamos cómo funcionan las máquinas virtuales comenzando desde la capa más inferior:
  • Infraestructura:  puede ser cualquier cosa, su PC o computadora portátil, un servidor dedicado que se ejecuta en un centro de datos, un servidor virtual privado utilizado en la nube, como una instancia Amazon EC2.
  • Sistema operativo del host:  Justo encima de la capa de infraestructura se encuentra el host que ejecuta un sistema operativo. Mientras usa su computadora portátil, es probable que sea Windows, MacOS o Linux. Como estamos hablando de máquinas virtuales, comúnmente se etiqueta como el sistema operativo host.
  • Hipervisor: también se denomina monitor de máquina virtual. Puede considerar una máquina virtual como una computadora autónoma empaquetada en un solo archivo, pero se requiere algo para poder ejecutar el archivo. Para ello se utilizan hipervisores de tipo 1 e hipervisores de tipo 2. En el hipervisor Tipo 1, Hyper-V para Windows, HyperKit para MacOS y KVM para Linux. Algunos hipervisores de tipo 2 populares son VirtualBox y VMWare.
  • Sistema operativo invitado: suponga que le gustaría ejecutar tres aplicaciones en su servidor en total aislamiento. Para ejecutar, necesitará 3 sistemas operativos invitados. Estos sistemas operativos invitados están controlados por los hipervisores. Cada sistema operativo invitado ocupa un espacio en disco de alrededor de 700 MB, por lo que el total de espacio en disco que usa es de 2.1 GB utilizado por el sistema operativo invitado y se vuelve más complicado cuando el sistema operativo invitado también usa su propia CPU y recursos de memoria. Esto es lo que hace que la máquina virtual sea pesada.
  • BINS / LIBS: cada sistema operativo invitado utiliza su propio conjunto de varios binarios y bibliotecas para ejecutar varias aplicaciones. Por ejemplo, si está utilizando Python o Node JS, tendrá que instalar los paquetes correspondientes desde esta capa. Dado que cada aplicación será diferente a la otra, se espera que cada aplicación tenga su propio conjunto de requisitos de biblioteca.
  • Capa de aplicación:  esta es la capa donde tiene su código fuente para la aplicación mágica que ha desarrollado. Si desea que cada una de estas aplicaciones esté aislada, tendrá que ejecutar cada aplicación dentro de su propio sistema operativo invitado.

Tipos de máquinas virtualesTipos de máquinas virtuales

Existen diferentes tipos de máquinas virtuales, cada una de las cuales ofrece varias funciones:

Máquinas virtuales del sistema

Una máquina virtual del sistema es una máquina virtual que permite que varias instancias del sistema operativo se ejecuten en un sistema host y compartan los recursos físicos. Emulan una arquitectura existente y se construyen con el propósito de proporcionar una plataforma para ejecutar varios programas donde el hardware real no está disponible para su uso. Algunas de las ventajas de las máquinas virtuales del sistema son:
  • Múltiples entornos de SO pueden acomodar el mismo disco duro principal con una partición virtual que permite compartir archivos generados en el entorno virtual "invitado" o en el sistema operativo "host".
  • El aprovisionamiento de aplicaciones, la alta disponibilidad, el mantenimiento y la recuperación ante desastres son inherentes al software de máquina virtual seleccionado.
Algunas de las desventajas de las máquinas virtuales del sistema se mencionan a continuación:
  • Cuando una máquina virtual accede indirectamente a la unidad de host, se vuelve menos eficiente que la máquina real.
  • La protección contra malware para máquinas virtuales no es muy compatible con el "host" y, en ocasiones, requiere un software independiente.

Procesar máquinas virtuales

Una máquina virtual de proceso también se conoce como máquina virtual de aplicación o Entorno de tiempo de ejecución administrado (MRE). Se utiliza para ejecutar un programa informático dentro de un sistema operativo host y admite un solo proceso. Se crea una máquina virtual de proceso cuando se inicia el proceso y se destruye tan pronto como sale del proceso. El objetivo principal de este tipo de máquina virtual es proporcionar un entorno de programación independiente de la plataforma.

Beneficios de las máquinas virtuales

La virtualización le proporciona una serie de ventajas, como la gestión de red centralizada, la reducción de la dependencia de hardware y software adicionales, etc. Además de estas, las máquinas virtuales ofrecen algunos beneficios más:
  • Se pueden usar varios entornos de SO simultáneamente en la misma máquina, aunque aislados entre sí.
  • Las máquinas virtuales tienen la capacidad de ofrecer una arquitectura de conjunto de instrucciones que difiere de las computadoras reales.
  • Tiene fácil mantenimiento, aprovisionamiento de aplicaciones, disponibilidad y recuperación conveniente.

Proveedores de VM populares
Proveedores de VM populares

A continuación, presentamos algunos de los software seleccionados que creemos que son los más adecuados para las personas que desean mantener las cosas reales, virtualmente.
  • Oracle VM Virtualbox

Oracle VM Virtualbox es gratuito, es compatible con Windows, Mac y Linux, y tiene la capacidad de albergar a 100.000 usuarios registrados. Si no está seguro de qué sistema operativo debería elegir utilizar, Oracle VM VirtualBox es una muy buena opción para seguir adelante. Admite una amplia gama de combinaciones de host y cliente. Es compatible con sistemas operativos desde Windows XP en adelante, cualquier nivel de Linus por encima de 2.4, Solaris, Open Solaris e incluso OpenBSD Unix. También se ejecuta en MacOS de Apple y puede albergar una sesión de cliente Mac VM.
  • VMware Fusion y Workstation

VMware Workstation y VMware Fusion son los líderes de la industria en virtualización. Es uno de los pocos hosts que admiten DirectX 10 y OpenGL 3.3. También es compatible con CAD y otras aplicaciones aceleradas por GPU para trabajar bajo virtualización.
  • Virtualización de Red Hat

Red Hat Virtualization tiene más usuarios empresariales con poderosas opciones bare-metal. Tiene dos versiones: una versión básica que se incluye en Enterprise Linux con cuatro VM distintas en un solo host y la otra es una edición de virtualización de Red Hat más sofisticada.

Funciones importantes de las máquinas virtuales

Una máquina virtual típica tiene las siguientes características de hardware.
  • La configuración de hardware de la máquina virtual es similar a la de la configuración de hardware predeterminada.
  • Hay un procesador y un procesador por núcleo. El modo de ejecución se selecciona para el motor de virtualización según la CPU del host y el sistema operativo invitado.
  • Hay disponible una única unidad de CD / DVD IDE que se configura después de recibir energía y se detecta automáticamente como una unidad física en el sistema host cuando se conecta.
  • Se utiliza un adaptador de red virtual que se configura al encender y utiliza la traducción de direcciones de red (NAT). Con la ayuda de la red NAT, las máquinas virtuales pueden compartir la dirección IP del sistema host.
  • Tiene un controlador USB.
  • Tiene una tarjeta de sonido configurada para usar la tarjeta de sonido predeterminada en el sistema host.
  • Tiene una pantalla configurada para usar la configuración de pantalla en la computadora host.
Algunas de las características del software incluyen:
  • La máquina virtual no está encriptada.
  • Las funciones de arrastrar y soltar, cortar y pegar están disponibles.
  • El acceso remoto de los clientes VNC y las carpetas compartidas están deshabilitados.

¿Qué son los contenedores?

Un contenedor es una unidad estándar de software que empaqueta el código y todas sus dependencias para ejecutar la aplicación de manera confiable y rápida de un entorno informático a otro. Una imagen de contenedor de Docker es un paquete ejecutable, liviano e independiente del software que incluye todo lo necesario para ejecutar una aplicación, como herramientas y bibliotecas del sistema, código, tiempo de ejecución y configuraciones.

Comprensión del contenedor DockerContenedor Docker

Hay mucho menos equipaje en comparación con las máquinas virtuales. Entendamos cada capa comenzando desde abajo más.
  • Infraestructura: similar a las máquinas virtuales, la infraestructura utilizada en los contenedores Docker puede ser su computadora portátil o un servidor en la nube.
  • Sistema operativo host: puede ser cualquier cosa que sea capaz de ejecutar Docker. Puede ejecutar Docker en MacOS, Windows y Linux.
  • Docker Daemon : Es el reemplazo del hipervisor. Docker Daemon es un servicio que se ejecuta en segundo plano del sistema operativo host. También gestiona la ejecución e interacción con contenedores Docker.
  • BINS / LIBS: Es similar al de las máquinas virtuales, excepto que no se ejecuta en un sistema operativo invitado, sino que se crean paquetes especiales llamados imágenes de Docker y finalmente el demonio de Docker ejecuta las imágenes.
  • Aplicación: este es el destino final para las imágenes de la ventana acoplable. Aquí se gestionan de forma independiente. Cada aplicación se empaqueta con sus dependencias de biblioteca en la misma imagen de Docker y aún está aislada.

Tipos de contenedorTipos de contenedor

Contenedores de Linux (LXC)  : LXC es la tecnología de contenedor de Linux original. Es un método de virtualización a nivel de sistema operativo Linux que se utiliza para ejecutar varios sistemas Linux aislados en un solo host.
Docker  : Docker se inició como un proyecto para crear contenedores LXC de aplicación única. Esto hace que los contenedores sean más flexibles y portátiles de usar. Docker actúa como una utilidad de Linux a un nivel superior y puede crear, enviar y ejecutar contenedores de manera eficiente.

Beneficios de los contenedores

  • Reduce los recursos de gestión de TI
  • Reduce el tamaño de las instantáneas
  • Reduce y simplifica las actualizaciones de seguridad.
  • Necesita menos código para migrar, transferir y cargar cargas de trabajo

Proveedores de contenedores popularesProveedores de contenedores populares

  1. Contenedores de Linux
    1. LXC
    2. LXD
    3. CGManager
  2. Estibador
  3. Contenedores de Windows Server

Docker vs máquinas virtuales 

¿En qué se diferencia un contenedor Docker de una máquina virtual?

  • Los contenedores son el espacio de usuario del sistema operativo, mientras que Docker es una tecnología basada en contenedores. Las ventanas acoplables están diseñadas para ejecutar varias aplicaciones. En Docker, los contenedores que se ejecutan comparten el kernel del sistema operativo del host.
  • Las máquinas virtuales no se basan en tecnología de contenedores. Se componen principalmente de espacio de kernel junto con espacio de usuario de un sistema operativo. El hardware del servidor está virtualizado y cada máquina virtual tiene sistemas operativos y aplicaciones que comparten los recursos de hardware del host.
Tanto las máquinas virtuales como las ventanas acoplables tienen méritos y deméritos. Dentro de un entorno de contenedor, se pueden ejecutar varias cargas de trabajo con un sistema operativo. También da como resultado una reducción de los recursos de gestión de TI, reduce el tamaño de las instantáneas, las aplicaciones giran más rápido, menos código para transferir, actualizaciones simplificadas y reducidas, etc. Sin embargo, dentro de un entorno de máquina virtual, cada carga de trabajo necesita un sistema operativo completo.

Diferencias básicas entre máquinas virtuales y contenedores

Maquinas virtualesContenedores
Las máquinas virtuales son pesadasLos contenedores son livianos
Tiene un rendimiento limitadoTiene rendimiento nativo
Cada una de las máquinas virtuales se ejecuta en su propio sistema operativoTodos los contenedores comparten el sistema operativo host
Tiene virtualización a nivel de hardwareTiene virtualización de SO
Tarda unos minutos en iniciarseSe necesitan milisegundos para iniciarse
Se asigna la memoria requeridaRequiere mucho menos espacio de memoria
Como está completamente aislado y por lo tanto es más seguroEl aislamiento a nivel de proceso tiene lugar en contenedores, por lo que es menos seguro en comparación con las máquinas virtuales.

Usos de máquinas virtuales frente a usos de contenedores

Tanto los contenedores como las máquinas virtuales tienen ventajas e inconvenientes, y la decisión final dependerá de sus necesidades específicas, pero existen algunas reglas generales.
  • Las máquinas virtuales son una mejor opción para ejecutar aplicaciones que requieren todos los recursos y la funcionalidad del sistema operativo cuando necesita ejecutar varias aplicaciones en servidores o tener una amplia variedad de sistemas operativos para administrar.
  • Los contenedores son una mejor opción cuando su mayor prioridad es maximizar la cantidad de aplicaciones que se ejecutan en un número mínimo de servidores.

¿Quién gana entre los dos?

Cuándo usar un contenedor versus cuándo usar una máquina virtual

Contenedores y máquinas virtuales, cada uno prospera en diferentes casos de uso. Revisemos algunos de los casos y sepamos cuándo usar un contenedor y cuándo es una buena opción usar máquinas virtuales.
  • Las máquinas virtuales necesitan bastante tiempo para iniciarse y apagarse:  esta función se utiliza mucho en entornos de desarrollo y prueba. Si tiene que encender y apagar máquinas con regularidad o clonar máquinas, los contenedores Docker son lo que debe elegir sobre las máquinas virtuales.
  • Los contenedores se basan en Linux: las  máquinas virtuales son una mejor opción cuando desea virtualizar otro sistema operativo.
  • Los Dockers no tienen muchas funciones de automatización y seguridad: la  mayoría de las plataformas de gestión virtual completas proporcionan una variedad de funciones de automatización junto con seguridad incorporada desde el nivel del kernel hasta los conmutadores de red.

Casos de uso de contenedores y máquinas virtuales

Existe una diferencia fundamental entre el uso de contenedores y máquinas virtuales. Las máquinas virtuales son aplicables para entornos virtuales, mientras que los contenedores utilizan el sistema de operaciones subyacente y no requieren un hipervisor.
Veamos algunos casos de uso:

Entornos virtualizados

En un entorno virtualizado, varios sistemas operativos se ejecutan en un hipervisor que administra las E / S en una máquina en particular. Sin embargo, en un entorno en contenedores, no está virtualizado y no se utiliza el hipervisor. Eso no significa que no pueda ejecutar un contenedor en una máquina virtual.
Puede ejecutar contenedores en una máquina virtual. Sabemos que los contenedores se ejecutan en un solo sistema operativo. Como puede ejecutar varios contenedores en un sistema físico, es como una mini virtualización sin un hipervisor. Los hipervisores enfrentan ciertas limitaciones relacionadas con el rendimiento y también bloquean ciertos componentes del servidor como el controlador de red.

DevOps

Los contenedores se utilizan en el entorno de DevOps para su desarrollo, prueba y compilación. Estos contenedores funcionan mucho más rápido que las máquinas virtuales, se aceleran y disminuyen y tienen un mejor acceso a los recursos del sistema.
Los contenedores son más pequeños y tienen la capacidad de ejecutar varios servidores y cientos de máquinas virtuales. Esto muestra que los contenedores tienen una mayor modularidad que las máquinas virtuales. Con microservicios, una aplicación se puede dividir en varios contenedores. Debido a esta combinación, puede evitar posibles bloqueos y esto también lo ayudará a aislar los problemas.

Sistemas más antiguos

Las máquinas virtuales pueden alojar una versión anterior de un sistema operativo. Supongamos que una aplicación se creó para un sistema operativo hace muchos años, que es poco probable que se ejecute en un sistema operativo de nueva generación. En tales casos, puede ejecutar el sistema operativo anterior en una máquina virtual y sin ningún cambio en la aplicación puede ejecutarlo.

Entornos más seguros

Dado que el contenedor necesita una interacción frecuente con el sistema operativo subyacente u otros contenedores, existe un riesgo de seguridad asociado. Sin embargo, en comparación con los contenedores, las máquinas virtuales son ideales y se consideran un entorno más seguro.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas