Saltar a contenido

Máquinas virtuales y Contenedores.

¿Qué es la virtualización?

Permite reservar una serie de recursos del sistema (RAM, CPU, DISCO) para emular un sistema operativo (guest / invitado) dentro de otro (host / anfitrión).

  • Podemos aprovechar mejor el hardware, ejecutamos varias máquinas dentro de una, aprovechando los recursos (CPU, RAM, Disco) al máximo, ya que que de otra forma tendríamos que tener varios equipos físicos.

  • Permite ejecutar software/aplicaciones incompatible con tu sistema operativo anfitrión, ya sea por un motivo de versiones o porque son sistemas operativos diferentes (Windows, Linux, MAC).

¿Qué es un Hipervisor?

El hipervisor es el software que permite crear y gestionar las máquinas virtuales (asignar recursos, crear los discos virtuales, etc).

Se distinguen dos tipos:

Hipervisores de tipo 1 (hipervisores bare metal):

  • No necesitan del sistema operativo anfitrión para comunicarse con los componentes del ordenador, por tanto la comunicación entre las máquinas virtuales y los componentes es más directa, rápida y eficiente. Es decir, si una máquina virtual necesita hacer una operación, se comunicará con el hipervisor y éste con la CPU.

    📌 Ejemplos: VMWare ESXi, KVM, Hyper-V

Hipervisores de tipo 2 (hipervisores alojados):

  • Son una aplicación más del sistema operativo instalado en la máquina y el hipervisor accede al hardware de la máquina a través de ese sistema operativo. Por tanto, si una máquina virtual requiere hacer una operación, pasará la orden al hipervisor, éste al sistema operativo y de ahí a la CPU.

    📌 Ejemplos: VirtualBox y VMWare Workstation.
¿Cuál de los dos tipos es más eficiente?

Son más rápidos y eficientes los hipervisores de tipo 1: VMWare ESXi, KVM, Hyper-V

¿Qué es un Contenedor?

  • Los contenedores, a diferencia de las máquinas virtuales, comparten el kernel del sistema operativo anfitrión aunque cada contenedor puede incluir sus propias aplicaciones, binarios y librerías.

    💥 Al compartir el kernel un host Linux podrá crear contenedores relacionados con Linux (comparten mismo kernel), y un host Windows podrá crear contenedores Windows.

NOTA IMPORTANTE

  • Windows tiene la posibilidad de ejecutar contenedores Linux a través del aislamiento de Hyper-V (WSL).
  • Básicamente emulas un Kernel Linux en Windows y por tanto en Windows sí puedes generar contenedores de Linux.
  • Cada contenedor ocupa mucho menos espacio, puesto que reutiliza ficheros del sistema del sistema operativo de la máquina anfitriona.

  • Arranque más rápido que una máquina virtual, pues aprovecha los procesos y ficheros del sistema del anfitrión.

  • Su objetivo es simular un servicio/aplicación no un sistema operativo completo.

AVISO

Lo habitual es tener un contenedor por servicio y no usar un contenedor para todos los servicios.

¿Qué es Docker?

  • Docker es un software que permite la creación y gestión de contenedores.

  • Compatible con Windows / Linux / MacOS.

  • Integrable con servicios en la nube:

    💥 AWS (Amazon Web Service).

    💥 Azure (Microsoft).

    💥 Google Cloud.

  • Existe el repositorio dockerhub donde podemos subir nuestros contenedores personalizados o bajarnos contenedores de terceros.

Es importante descargar contenedores de proveedores fiables para evitar contenedores con malware.

Resumen

Característica Máquina virtual Contenedor
¿Qué ejecuta? Un sistema operativo completo Una aplicación o servicio
Kernel Cada VM tiene su propio kernel Comparte el kernel del sistema anfitrión
Arranque Más lento Muy rápido
Consumo de recursos Mayor Menor
Uso típico Servidores, laboratorios y ejecutar diferentes SO Servicios y aplicaciones