Una pregunta muy habitual cuando empiezas a hablar de contenedores, es cuál es la diferencia entre contenedores y máquinas viruales (como VirtualBox o VMware) porque “parece” que hacen lo mismo.
Aunque Docker y las máquinas virtuales (VMs) tienen objetivos similares (aislar aplicaciones y sus dependencias), la diferencia es la arquitectura.
- Una máquina virtual emula un ordenador completo, incluyendo el hardware y un Sistema Operativo completo (Windows, Linux) para ella sola. Son pesadas (GBs) y lentas.
- Un contenedor Docker comparte el núcleo (kernel) de tu sistema operativo, pero aísla los procesos. Son ligeros (MBs) y arrancan al instante.
Para verlo mejor, vamos a verlo con este diagrama 👇
Virtualización vs Contenedorización
Para entender Docker, primero tenemos que entender cómo solucionábamos esto antes: usando Máquinas Virtuales (VMs).
Tradicionalmente, si queríamos aislar aplicaciones, usábamos virtualización. Herramientas como VirtualBox o VMware nos permiten ejecutar un sistema operativo completo (Guest OS) encima de nuestro sistema operativo anfitrión (Host OS).

El problema es evidente: Es muy pesado. Cada aplicación aislada necesita arrancar un Sistema Operativo entero para ella sola. Eso consume mucha RAM, mucha CPU y tarda minutos en arrancar.
Aquí es donde los contenedores cambian las reglas del juego. A diferencia de una máquina virtual, los contenedores no incluyen un sistema operativo invitado.
En su lugar, los contenedores comparten el núcleo (kernel) del sistema operativo anfitrión, pero se ejecutan en espacios de usuario aislados.

Ventajas de Docker sobre VMs
- Menor consumo de recursos: Los contenedores comparten el kernel del host, lo que reduce el uso de CPU, memoria y almacenamiento.
- Mayor velocidad: Los contenedores se inician en segundos, mientras que las VMs pueden tardar minutos.
- Facilidad de uso: Docker simplifica la creación, distribución y ejecución de aplicaciones.
