Ingeniero DevOps: pregunta de entrevista
¿Cuál es la diferencia entre contenedores y máquinas virtuales?
Las máquinas virtuales emulan hardware y usan kernels separados, con mayor aislamiento y coste; los contenedores comparten kernel, arrancan más rápido y son más densos, pero comparten límite de seguridad.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Una máquina virtual ejecuta su propio kernel sobre hardware virtualizado gestionado por un hipervisor, así que cada VM arranca como un ordenador, tarda segundos o minutos y aísla cargas en la frontera del hardware. Un contenedor es un proceso sobre el kernel del host confinado por namespaces, cgroups y una imagen de sistema de ficheros, así que arranca en milisegundos, comparte la memoria y caché del kernel y se empaqueta con mucha más densidad. El kernel compartido es también el riesgo compartido: un exploit de kernel desde un contenedor alcanza al host, por eso las plataformas multi-tenant envuelven contenedores en microVMs o sandboxes. La mayoría de flotas ejecutan contenedores sobre VMs y obtienen ambas cosas.
Ejemplo
Una plataforma de CI ejecuta cada job en un contenedor sobre un pool de VMs: los contenedores dan arranque rápido y una imagen reproducible por job, las VMs dan la frontera entre clientes. El código no confiable de clientes corre en microVMs gVisor o Firecracker en lugar de contenedores simples, aceptando un arranque más lento a cambio de aislamiento de kernel.
Errores frecuentes
- Afirmar que los contenedores son VMs ligeras con el mismo aislamiento.
- Ejecutar root dentro de contenedores con montajes del host y llamarlo aislado.
- Elegir VMs para una capa web sin estado que escalaría más rápido y barato como contenedores.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.