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).
Ventajas:
- Podemos aprovechar mejor el hardware de la máquina anfitriona, ya que estamos ejecutando varios "ordenadores" en uno mismo, aprovechando recursos que de otra forma es posible que no se llegaran a usar.
- Permite ejecutar software que quizá sea 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 la parte 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 de un 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.
¿Qué es un Contenedor?¶
-
Los contenedores, a diferencia de las máquinas virtuales, comparten el kernel, archivos binarios y librerías del sistema operativo (anfitrión).
💥 Por tanto un host Linux podrá crear contenedores relacionados con Linux, y un host Windows podrá crear contenedores Windows.
NOTA
- Windows tiene la posibilidad de ejecutar contenedores Linux a través del aislamiento de Hyper-V (WSL).
- Básicamente activas un Kernel Linux en Windows y por tanto en Windows sí puedes generar contenedores de Linux.
-
Cada contenedor ocupa mucho menos espacio, puesto que se ahorra todo los ficheros del sistema del sistema operativo que ahora recoge de la máquina anfitriona.
-
Su objetivo no es simular un sistema operativo completo, sino un servicio/aplicación en concreto, por tanto aquí también se produce un ahorro de espacio en disco.
💥 Aunque un único contenedor puede emular varios servicios/aplicaciones es habitual tener varios contenedores y cada uno que tenga únicamente corriendo 1 servicio/ aplicación y las dependencias que se necesitan para que éste funcione.
-
Arranca mucho más rápido que una máquina virtual, pues utiliza los procesos y ficheros del sistema del anfitrión, el cual ya se encuentra arrancado.
-
Docker es integrable con servicios en la nube:
💥 AWS (Amazon Web Service).
💥 Azure (Microsoft).
💥 Google Cloud.
-
Docker es un software que permite la creación y gestión de contenedores.