Para entender cuál es la diferencia entre un contenedor y una MV, podríamos utilizar la analogía de que una MV es como una casa, mientras que el contenedor es como un piso.
![](/sites/default/files/inline/images/containersapartments.jpg) Las máquinas virtuales son autónomas e independientes como una casa. Todas las casas tienen su propia infraestructura: tuberías, calefacción, electricidad, etc. Además, una casa tiene requerimientos mínimos (al menos 1 dormitorio, 1 techo, etc.) En cambio, los contenedores se construyeron para aprovechar una infraestructura compartida y por ello podemos compararlos con un piso. El complejo de pisos comparte las tuberías, la calefacción, el sistema eléctrico, la entrada principal, los ascensores, etc. De la misma forma, los contenedores aprovechan los recursos disponibles del servidor mediante el kernel de Linux. También, hay que considerar que los pisos son de diferentes tamaños y formas. Debido a que los contenedores no tienen un sistema operativo completo, sino únicamente las características mínimas para acoplarse a Linux, como algunos ejecutables en /bin, algunos archivos de configuración y definición en /etc y algunos otros archivos, estos pueden ser de tamaño pequeño, lo cual los hace más rápidos al momento de moverlos o ejecutarlos en segundo plano. Esto se traduce en mayor velocidad a partir del momento en que se construyen, desde el canal de suministro de la fábrica de software hasta la ejecución final en producción. Por cierto, los contenedores se ajustan perfectamente al contexto de la arquitectura de microservicios CI/CD, pero esa es otra historia. Los procesos en el contenedor están estrechamente relacionados con el ciclo de vida del contenedor. Cuando inicializo un contenedor, normalmente quiero que todos los servicios de mi aplicación se ejecuten y funcionen correctamente (por ejemplo, piense en el puerto 80 para el contenedor de un servidor web y en los puertos 57772 y 1972 para un contenedor de InterSystems IRIS). Cuando detengo el contenedor, también se detienen todos los procesos. Lo que describí en esta publicación es la noción fundamental del tiempo de ejecución de un contenedor, es decir, un entorno protegido que aísla sus procesos del servidor y de otros contenedores. Hay otra parte para entender mejor el trabajo que realizan los contenedores, el cual hace referencia a sus imágenes. Pero esto lo veremos en una siguiente publicación.