Diferencia docker y maquina virtual

Virtualización Docker

Las máquinas virtuales tienen un sistema operativo completo con su propia gestión de memoria instalada con la sobrecarga asociada de los controladores de dispositivos virtuales. En una máquina virtual se emulan valiosos recursos para el SO invitado y el hipervisor, lo que permite ejecutar muchas instancias de uno o más sistemas operativos en paralelo en una sola máquina (o host). Cada SO invitado se ejecuta como una entidad individual del sistema anfitrión. Por lo tanto, podemos considerarlo como una casa independiente de pleno derecho en la que no se comparte ningún recurso, como se muestra a continuación:

Por otro lado, los contenedores Docker se ejecutan con el motor Docker y no con el hipervisor. Por lo tanto, los contenedores son más pequeños que las máquinas virtuales y permiten una puesta en marcha más rápida con un mejor rendimiento, un menor aislamiento y una mayor compatibilidad posible debido a la compartición del kernel del host. Por lo tanto, se parece mucho al sistema de pisos residenciales en el que se comparten los recursos del edificio.

A la hora de comparar ambos, se puede decir que los Contenedores Docker tienen mucho más potencial que las Máquinas Virtuales. Es evidente ya que los Contenedores Docker son capaces de compartir un único kernel y compartir librerías de aplicaciones. Los contenedores presentan una menor sobrecarga del sistema que las máquinas virtuales y el rendimiento de la aplicación dentro de un contenedor es generalmente igual o mejor en comparación con la misma aplicación que se ejecuta dentro de una máquina virtual.

  Scrum que es y para que sirve

¿Es docker una máquina virtual?

Docker, Kubernetes y los contenedores son, en efecto, tecnologías potentes que pueden aportar muchas ventajas a una empresa. Pero no son necesariamente la elección correcta para todas las cargas de trabajo. En algunos casos, es mejor quedarse con máquinas virtuales simples.

Docker, Kubernetes y los contenedores son realmente tecnologías potentes que pueden aportar muchos beneficios a una empresa. Sin embargo, dependiendo del tipo de carga de trabajo que tengas, puede que tengas que ceñirte al uso de máquinas virtuales (VM) en su lugar, o a una combinación tanto de contenedores como de VM.

Con un tiempo de ejecución de contenedores como Docker, su aplicación se encuentra dentro de las características de aislamiento que proporciona un contenedor, pero sigue compartiendo el mismo kernel que otros contenedores en el mismo host. Como resultado, los procesos que se ejecutan dentro de los contenedores son visibles desde el sistema anfitrión (dados los privilegios suficientes para listar todos los procesos). Por ejemplo, si inicias un contenedor MongoDB con Docker, y luego ejecutas ps -e | grep mongo en un shell normal en el host (no en Docker), el proceso será visible. El hecho de que varios contenedores compartan el mismo kernel permite al usuario final empaquetar montones y montones de contenedores en la misma máquina con un tiempo de inicio casi instantáneo. Además, como consecuencia de que los contenedores no necesitan incrustar un sistema operativo completo, son muy ligeros, comúnmente alrededor de 5-100 MB.

  Servicios cloud para empresas

Por qué usar docker en lugar de vm

Sigo releyendo la documentación de Docker para tratar de entender la diferencia entre Docker y una VM completa. ¿Cómo consigue proporcionar un sistema de archivos completo, un entorno de red aislado, etc. sin ser tan pesado?

Docker utilizaba originalmente LinuX Containers (LXC), pero más tarde cambió a runC (antes conocido como libcontainer), que se ejecuta en el mismo sistema operativo que su anfitrión. Esto le permite compartir muchos de los recursos del sistema operativo anfitrión. Además, utiliza un sistema de archivos por capas (AuFS) y gestiona la red.

AuFS es un sistema de archivos por capas, por lo que se puede tener una parte de sólo lectura y otra de escritura que se fusionan. Uno podría tener las partes comunes del sistema operativo como de sólo lectura (y compartidas entre todos tus contenedores) y luego dar a cada contenedor su propio montaje para la escritura.

Así que, digamos que tienes una imagen de contenedor de 1 GB; si quisieras usar una VM completa, necesitarías tener 1 GB x número de VMs que quieres. Con Docker y AuFS puedes compartir la mayor parte de ese 1 GB entre todos los contenedores y si tienes 1000 contenedores puede que sólo tengas un poco más de 1 GB de espacio para el SO de los contenedores (suponiendo que todos ejecuten la misma imagen de SO).

Docker vs máquina virtual

Las máquinas virtuales (VM) se han vuelto omnipresentes en el desarrollo y despliegue de software desde el cambio de siglo. La abstracción de las máquinas en el software ha facilitado y abaratado el movimiento y el control del software y los servicios en la era de Internet.

  Aplicaciones contenerizadas

Una máquina virtual es una aplicación que emula un ordenador, normalmente para ejecutar un sistema operativo y aplicaciones. Puede colocarse en cualquier recurso físico (compatible) que esté disponible. El usuario final experimenta el software como si estuviera en una máquina física, pero quienes gestionan el hardware pueden centrarse en la asignación de recursos a mayor escala.

Docker no es una tecnología VM. No simula el hardware de una máquina y no incluye un sistema operativo. Un contenedor Docker no está restringido por defecto a unos límites de hardware específicos. Si Docker virtualiza algo, virtualiza el entorno en el que se ejecutan los servicios, no la máquina. Además, Docker no puede ejecutar fácilmente software de Windows (o incluso el escrito para otros sistemas operativos derivados de UNIX).

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad