Saltar al contenido
Personaje de Palentinoinfograph/ palentino.es
INFOGRAPHVolver a la colección
Hipervisores · GIF animado1.024 × 1.536 pxNuevo

Máquinas virtuales y contenedores Dos arquitecturas enfrentadas, con sus capas y usos.

100 %
LECTURA NÍTIDAAbrir GIF original ↗1024 × 1536 px · el aumento no añade detalle al archivo
Máquinas virtuales y contenedores	Dos arquitecturas enfrentadas, con sus capas y usos.
Auto adapta la lectura · + − zoom · 0 ver completa · Esc salirVista normal

PARA ENTENDER EL ESQUEMA

Sobre esta infografía

Una aplicación puede ejecutarse dentro de una máquina virtual o dentro de un contenedor. Desde fuera, el resultado puede parecer parecido: un servicio funciona en un entorno separado.

Sin embargo, por debajo hay dos arquitecturas distintas. Entender sus capas ayuda a decidir qué desplegar, cómo mantenerlo y dónde situar las fronteras de aislamiento.

En esta nueva infografía de Infograph las represento como construcciones transparentes: podemos mirar dentro y descubrir qué aporta cada capa.

Máquinas virtuales: una máquina completa por entorno

Un hipervisor presenta hardware virtual sobre el que se ejecutan máquinas independientes. Cada máquina virtual dispone de su propio sistema operativo invitado y su propio kernel.

En la infografía utilizo un hipervisor de tipo 1, situado directamente sobre el hardware. Encima aparecen dos máquinas virtuales, cada una con estas capas:

Aplicación.

Dependencias y bibliotecas.

Sistema operativo invitado y kernel propio.

Esta arquitectura permite, por ejemplo, mantener una máquina con Windows y otra con Linux en un mismo servidor físico, siempre que la plataforma admita esos sistemas.

Cada entorno requiere sus propias actualizaciones, configuración y recursos. Virtualizar una máquina también implica mantener el sistema operativo que lleva dentro.

Contenedores: procesos aislados sobre un kernel común

Un contenedor empaqueta una aplicación con los componentes que necesita para ejecutarse. Su imagen puede incluir bibliotecas, herramientas y archivos de una distribución, pero no arranca un kernel independiente como lo hace una máquina virtual.

En el modelo de contenedores Linux representado, los contenedores utilizan el kernel del anfitrión.

Dos mecanismos ayudan a entender este funcionamiento:

Namespaces: proporcionan vistas separadas de elementos como procesos, red o puntos de montaje.

cgroups: permiten controlar y limitar recursos como CPU y memoria.

El entorno de ejecución, o runtime, participa en la creación y gestión de los contenedores.

Al compartir el kernel, se evita mantener un sistema operativo invitado completo por cada contenedor. Esto suele reducir la sobrecarga y permite iniciar los procesos con rapidez.

La diferencia está en la frontera

En una máquina virtual, la separación se construye alrededor de una máquina con su propio kernel.

En un contenedor, la separación se construye alrededor de procesos que comparten el kernel del anfitrión.

Esta diferencia afecta al consumo de recursos, la compatibilidad, el mantenimiento y la seguridad. Por eso conviene evitar una idea demasiado simplificada: un contenedor no es una máquina virtual pequeña.

Tampoco basta con elegir una tecnología para dar por resuelto el aislamiento. Importan los permisos, las actualizaciones, los recursos compartidos y la configuración.

¿Cuándo elegir cada opción?

Una máquina virtual encaja cuando necesitas un sistema operativo completo e independiente. Por ejemplo, un entorno Windows para una aplicación heredada, un laboratorio con varios sistemas o un escritorio de pruebas.

Un contenedor encaja cuando quieres empaquetar y desplegar una aplicación de forma repetible. Por ejemplo, una API, un servicio web o un componente que debe pasar por desarrollo, pruebas y producción con unas dependencias bien definidas.

Los contenedores también pueden ejecutar aplicaciones que no sigan una arquitectura de microservicios. Lo importante es cómo se empaquetan, qué necesitan y cómo se van a operar.

Portabilidad y persistencia: dos detalles importantes

Empaquetar una aplicación facilita trasladarla, pero no elimina todos los requisitos del entorno. Una imagen de contenedor necesita compatibilidad con el sistema operativo y la arquitectura de destino, además de una configuración adecuada.

Los datos también merecen una decisión explícita. En las máquinas virtuales suelen almacenarse en discos virtuales. En contenedores, los datos que deben sobrevivir a su sustitución necesitan volúmenes u otro almacenamiento persistente.

Sustituir un contenedor debería ser una operación prevista; perder los datos no.

Pueden trabajar juntos

Es habitual ejecutar contenedores dentro de máquinas virtuales.

La máquina virtual aporta un sistema operativo invitado y una frontera de virtualización. Dentro, los contenedores permiten organizar y desplegar las aplicaciones.

Combinar ambas tecnologías puede ser útil, aunque también obliga a mantener ambas capas: hipervisor, sistemas operativos, entorno de contenedores e imágenes.

Y, en cualquiera de los dos casos, conviene recordar que una instantánea no sustituye una copia de seguridad.

La elección empieza por unas preguntas concretas: ¿qué necesitas aislar?, ¿qué sistemas debes ejecutar?, ¿dónde guardarás los datos? y ¿cómo vas a mantener todo el conjunto?

Infograph · palentino.es

0 visitas
Valora este esquema—/5 · 0 votos
Pulsa una estrella para votar

Puedes cambiar tu elección desde el pie de cualquier página. Las opciones adicionales empiezan desactivadas.