Una de las preguntas frecuentes que se hacen sobre Docker es en qué se diferencia de la VM (máquina virtual).
Cuando se trata de infraestructura en la nube, la máquina virtual ha sido el estándar de referencia para muchas de sus ventajas. Sin embargo, ¿qué pasaría si tuviera una alternativa a una máquina virtual que fuera más liviana, económica y escalable? Eso es precisamente lo que Docker .
Docker es una tecnología basada en contenedores que le permite desarrollar aplicaciones distribuidas. En esta publicación de blog, explicaré las diferencias entre las máquinas virtuales y los contenedores Docker.
What is a Virtual Machine?
Una máquina virtual es un sistema que actúa exactamente como una computadora.
En términos simples, hace posible ejecutar lo que parece estar en muchas computadoras separadas en hardware, es decir, una computadora. Cada máquina virtual requiere su sistema operativo subyacente y luego se virtualiza el hardware.
What is Docker?
Docker es una herramienta que utiliza contenedores para facilitar la creación, implementación y ejecución de aplicaciones. Vincula la aplicación y sus dependencias dentro de un contenedor.
Docker de aprendizaje ¡es fácil!
Docker vs. VM
Ahora te diré las diferencias significativas entre los contenedores de Docker y las máquinas virtuales. Bueno, las diferencias significativas son la compatibilidad con el sistema operativo, la seguridad, la portabilidad y el rendimiento.
Así que analicemos cada uno de estos términos uno por uno.
Soporte del sistema operativo
El soporte del sistema operativo de la máquina virtual y el contenedor Docker es muy diferente. En la imagen de arriba, puede ver que cada máquina virtual tiene su sistema operativo invitado por encima del sistema operativo host, lo que hace que las máquinas virtuales sean pesadas. Mientras que, por otro lado, los contenedores Docker comparten el sistema operativo host, y es por eso que son livianos.
Compartir el sistema operativo host entre los contenedores los hace muy ligeros y les ayuda a iniciarse en solo unos segundos. Por lo tanto, la sobrecarga para administrar el sistema de contenedores es muy baja en comparación con la de las máquinas virtuales.
Los contenedores de la ventana acoplable son adecuados para situaciones en las que desea ejecutar varias aplicaciones en un solo kernel de sistema operativo. Pero si tiene aplicaciones o servidores que deben ejecutarse en diferentes tipos de sistemas operativos, entonces se requieren máquinas virtuales.
Seguridad
La máquina virtual no comparte el sistema operativo y existe un fuerte aislamiento en el kernel del host. Por lo tanto, son más seguros en comparación con los contenedores. Un contenedor tiene muchos riesgos de seguridad y vulnerabilidades, ya que los contenedores tienen un núcleo de host compartido.
Además, dado que los recursos de la ventana acoplable se comparten y no tienen un espacio de nombres, un atacante puede explotar todos los contenedores de un clúster si obtiene acceso incluso a un contenedor. En una máquina virtual, no obtiene acceso directo a los recursos y el hipervisor está ahí para restringir el uso de recursos en una VM.
Portabilidad
Los contenedores Docker son fácilmente portables porque no tienen sistemas operativos separados. Un contenedor se puede portar a un sistema operativo diferente y puede iniciarse inmediatamente. Por otro lado, las máquinas virtuales tienen sistemas operativos separados, por lo que portar una máquina virtual es difícil en comparación con los contenedores, y también lleva mucho tiempo portar una máquina virtual debido a su tamaño.
Para propósitos de desarrollo donde las aplicaciones deben desarrollarse y probarse en diferentes plataformas, los contenedores Docker son la opción ideal.
Rendimiento
Comparar las máquinas virtuales y los contenedores Docker no sería justo porque ambos se utilizan para diferentes propósitos. Pero la arquitectura ligera de Docker es característica que consume menos recursos lo convierte en una mejor opción que una máquina virtual. Como resultado, los contenedores pueden iniciarse muy rápido en comparación con el de las máquinas virtuales, y el uso de recursos varía según la carga o el tráfico en ellos.
A diferencia del caso de las máquinas virtuales, no es necesario asignar recursos de forma permanente a los contenedores. Escalar y duplicar los contenedores también es una tarea fácil en comparación con la de las máquinas virtuales, ya que no es necesario instalar un sistema operativo en ellas.
En resumen
A continuación, se muestra una tabla que concluye sobre las diferencias entre una máquina virtual y un contenedor Docker.
Máquina virtual | Contenedor Docker |
Aislamiento de procesos a nivel de hardware | Aislamiento de procesos a nivel de SO |
Cada máquina virtual tiene un sistema operativo independiente | Cada contenedor puede compartir SO |
Arranca en minutos | Arranca en segundos |
Las máquinas virtuales son de pocos GB | Los contenedores son livianos (KB / MB) |
Las máquinas virtuales listas para usar son difíciles de encontrar | Los contenedores Docker prediseñados están fácilmente disponibles |
Las máquinas virtuales pueden moverse a un nuevo host fácilmente | Los contenedores se destruyen y recrean en lugar de moverse |
La creación de VM lleva relativamente más tiempo | Los contenedores se pueden crear en segundos |
Más uso de recursos | Menor uso de recursos |