Funcionamiento de las máquinas virtuales
Como su propio nombre indica, una máquina virtual (o VM a partir de ahora, de sus siglas en inglés: Virtual Machine) es un sistema operativo completo funcionando de manera aislada sobre otro sistema operativo completo.
La tecnología de VMs permite compartir el hardware de modo que lo puedan utilizar varios sistemas operativos al mismo tiempo.
Funcionamiento de los contenedores
La filosofía de los contenedores es totalmente diferente a la de las VMs. Si bien tratan también de aislar a las aplicaciones y de generar un entorno replicable y estable para que funcionen, en lugar de albergar un sistema operativo completo lo que hacen es compartir los recursos del propio sistema operativo «host» sobre el que se ejecutan.
Docker Engine se encarga de lanzar y gestionar los contenedores con nuestras aplicaciones, pero en lugar de exponer los diferentes recursos de hardware de la máquina de manera discreta (es decir, 1 procesador y «x» GB de RAM… para cada aplicación), lo que hace es compartirlos entre todos los contenedores optimizando su uso y eliminando la necesidad de tener sistemas operativos separados para conseguir el aislamiento.
Tenemos un curso ideal para ti
¡HAZ CLIC AQUÍ!
VM vs Docker
En primer lugar debemos tener en cuenta que, en el caso de los contenedores, el hecho de que no necesiten un sistema operativo completo sino que reutilicen el subyacente reduce mucho la carga que debe soportar la máquina física, el espacio de almacenamiento utilizado y el tiempo necesario para lanzar las aplicaciones. Por lo tanto los contenedores son mucho más ligeros que las máquinas virtuales.
Cuando definimos una máquina virtual debemos indicar de antemano cuántos recursos físicos le debemos dedicar. Podemos decir que nuestra VM va a necesitar 2 vCores (procesadores virtuales), 4GB de RAM y un espacio en disco de 100 GB. En el caso de los procesadores, es posible compartirlos entre varias máquinas virtuales, y el espacio en disco se puede hacer que solo ocupe lo que de verdad se esté utilizando, de modo que crezca en función de las necesidades y no ocupe siempre tanto como habíamos reservado.
¿Dónde está la diferencia?
Docker es una tecnología basada en contenedores y los contenedores son solo espacio de usuario del sistema operativo. En el nivel bajo, un contenedor es solo un conjunto de procesos aislados del resto del sistema, que se ejecutan desde una imagen distinta que proporciona todos los archivos necesarios para admitir los procesos. Está construido para ejecutar aplicaciones. En Docker, los contenedores que se ejecutan comparten el núcleo del sistema operativo host.
Una máquina virtual, por otro lado, no se basa en la tecnología de contenedores. Se componen de espacio de usuario más espacio de kernel de un sistema operativo. En máquinas virtuales, el hardware del servidor está virtualizado. Cada VM tiene un sistema operativo (SO) y aplicaciones. Comparte recursos de hardware desde el host.
Te invitamos a ver todos los artículos que tenemos para ti, coméntanos que tal te pareció este articulo y compártelo con más personas.
Obtén un 35% de descuento en curso Contenedores con Docker y Kubernetes
¡HAZ CLIC AQUÍ!