Muchos equipos de TI empresarial implementan más aplicaciones hoy que hace solo unos años, aunque los costos de infraestructura no han disminuido proporcionalmente. Para las organizaciones que aún confían en las máquinas virtuales tradicionales para cada carga de trabajo, la promesa de realmente hacer más con menos frecuencia sigue siendo difícil.
La virtualización de contenedores es una forma ligera de virtualización que permite que las aplicaciones se ejecuten en espacios de usuarios aislados llamados contenedores mientras comparten el mismo kernel del sistema operativo. A diferencia de las máquinas virtuales tradicionales que virtualizan todas las pilas de hardware, los contenedores virtualizan solo el OS en sí, lo que ofrece mejoras drásticas en la eficiencia de los recursos, la velocidad de implementación y la portabilidad. Esta virtualización a nivel de OS ha transformado la forma en que las organizaciones desarrollan, implementan y escalan aplicaciones modernas.
A pesar de la adopción generalizada, las empresas luchan con un desafío crítico: administrar datos persistentes en entornos en contenedores. Si bien los contenedores sobresalen en cargas de trabajo sin estado, en el momento en que las aplicaciones necesitan persistir los datos, bases de datos, cargas de archivos, registros de transacciones, la complejidad se multiplica.
Esta guía examina la virtualización de contenedores desde perspectivas arquitectónicas y prácticas. Obtendrá una comprensión de cómo los contenedores difieren de las máquinas virtuales, cuándo tiene sentido cada enfoque y cómo abordar los desafíos persistentes del almacenamiento que determinan el éxito o la falla en la producción.
La virtualización de contenedores funciona a través de la virtualización a nivel del OS operativo, donde el kernel del sistema operativo host proporciona espacios de usuario aislados para cada contenedor. Cada contenedor cree que tiene acceso exclusivo al sistema operativo, pero todos los contenedores en un host comparten el mismo kernel, una diferencia fundamental con respecto a la virtualización tradicional.
El tiempo de ejecución del contenedor (Docker Engine, contenedor o CRI-O) administra el aislamiento mediante dos funciones clave del kernel de Linux. Los espacios de nombres aíslan los recursos del sistema, como las identificaciones de procesos, las interfaces de red y los sistemas de archivos. Los grupos de control (cgroups) limitan el consumo de recursos, lo que evita que un solo contenedor monopolice la CPU, la memoria o el ancho de banda I/O.
Cuando inicia un contenedor, el tiempo de ejecución crea un nuevo conjunto de espacio de nombres y asigna límites de cgroup. La imagen del contenedor, una plantilla que contiene código de aplicación, tiempo de ejecución, bibliotecas y dependencias, se desempaca en este entorno aislado. A diferencia de las máquinas virtuales que arrancan un sistema operativo completo, los contenedores comienzan casi instantáneamente porque son procesos aislados que se ejecutan en el kernel del host ya iniciado.
Esta arquitectura puede ofrecer tiempos de inicio que van desde cientos de milisegundos hasta decenas de segundos.
Sin embargo, el aislamiento no es absoluto. Todos los contenedores comparten el kernel del host, lo que significa que una vulnerabilidad del kernel podría afectar potencialmente a todos los contenedores en ese host. Esta compensación, un aislamiento más liviano pero menos completo, impulsa muchas decisiones de arquitectura en implementaciones empresariales.
La elección entre contenedores y máquinas virtuales no se trata de elegir tecnología más nueva. Cada enfoque ofrece ventajas distintivas según los requisitos de carga de trabajo, las necesidades de seguridad y las limitaciones operativas.
Las máquinas virtuales funcionan a través de la virtualización de hardware, donde un hipervisor crea hardware virtual para cada VM. Cada VM ejecuta un sistema operativo invitado completo, incluido su propio kernel, bibliotecas de sistemas y binarios. Esto proporciona un aislamiento sólido; una VM comprometida no puede acceder directamente al hipervisor u otras VM, pero requiere recursos significativos.
Containers comparten el kernel del OS operativo host mientras mantienen espacios de usuario aislados. Un contenedor incluye solo la aplicación y sus dependencias, por lo general, requiere megabytes en comparación con gigabytes para VM. Esta eficiencia permite ejecutar más contenedores que máquinas virtuales en hardware idéntico.
Las máquinas virtuales proporcionan un aislamiento más fuerte a través de la virtualización de hardware, lo que las hace preferidas para entornos de varios inquilinos o códigos no confiables. Containers ofrecen aislamiento a nivel de proceso que generalmente es suficiente para cargas de trabajo confiables, aunque el kernel compartido sigue siendo una consideración para las aplicaciones sensibles.
La virtualización de contenedores ofrece mejoras medibles en la velocidad de desarrollo, la eficiencia operativa y los costos de infraestructura. Esto puede provocar una reducción en los tiempos de implementación y costos de infraestructura más bajos después de contener las cargas de trabajo adecuadas.
Containers eliminan el problema de “funcionamiento en mi máquina” a través de la consistencia ambiental. Los desarrolladores empaquetan aplicaciones con todas las dependencias, lo que garantiza un comportamiento idéntico desde la computadora portátil hasta la producción. Esta consistencia reduce las fallas de implementación.
Los procesos de CI/CD aprovechan los contenedores para una iteración más rápida, lo que permite que los tiempos de construcción disminuyan de horas a minutos. Las reversiones se vuelven triviales; simplemente vuelva a implementar la imagen del contenedor anterior. Netflix, por ejemplo, implementa hasta medio millón de instancias de contenedores por día. La naturaleza liviana transforma la economía de los recursos. El escalamiento automático se vuelve práctico a escala de contenedor: Kubernetes lanza nuevos contenedores en segundos, respondiendo a la carga, mientras que el escalamiento automático de VM toma minutos. Esta capacidad de respuesta significa ejecutarse de manera más eficiente, escalar con precisión cuando sea necesario en lugar de aprovisionarse en exceso.
Containers abstraen aplicaciones de la infraestructura subyacente, lo que permite una verdadera portabilidad. La misma imagen del contenedor se ejecuta de manera idéntica en la computadora portátil, los servidores de prueba y los clústeres de producción de un desarrollador, ya sea en las instalaciones o en varias nubes.
Esta portabilidad permite estrategias multinube sin el bloqueo del proveedor. Las organizaciones ejecutan contenedores en AWS, Azure e infraestructura en las instalaciones simultáneamente, trasladando cargas de trabajo según los costos, el rendimiento o los requisitos regulatorios.
Sin embargo, la portabilidad tiene límites. Containers con requisitos de almacenamiento persistentes necesitan una arquitectura cuidadosa para mantener la disponibilidad de datos durante las migraciones. Las aplicaciones con estado, bases de datos, almacenamiento de archivos, colas de mensajes, requieren consideraciones adicionales en comparación con los microservicios sin estado.
Si bien los contenedores sobresalen en la ejecución de aplicaciones sin estado, el almacenamiento persistente sigue siendo el desafío más significativo en las implementaciones de contenedores. A diferencia de las máquinas virtuales con almacenamiento persistente incorporado, los contenedores son efímeros por diseño. Cuando un contenedor se detiene, su capa de escritura y los datos almacenados en él desaparecen.
Esto crea un problema fundamental: Muchas aplicaciones empresariales requieren almacenamiento de datos persistente. Las bases de datos, los sistemas de administración de contenido y los registros de transacciones necesitan datos que sobrevivan a los reinicios de contenedores. Sin embargo, la mayoría de los debates sobre contenedores tratan el almacenamiento como una idea posterior.
La Interfaz de almacenamiento de contenedores (Container Storage Interface, CSI) surgió como el estándar de la industria para conectar sistemas de almacenamiento a cargas de trabajo en contenedores. CSI permite que los proveedores de almacenamiento escriban complementos una vez que funcionen en cualquier orquestador compatible con CSI.
Los volúmenes persistentes (PV) proporcionan el mecanismo para la persistencia de datos. Cuando se configuran correctamente, las PV existen independientemente de los ciclos de vida de los contenedores, lo que permite que los datos persistan a través de actualizaciones, migraciones y fallas de contenedores. Las soluciones modernas de almacenamiento nativo en contenedores abordan estos desafíos a través del aprovisionamiento dinámico, donde los volúmenes de almacenamiento se crean automáticamente cuando las aplicaciones los solicitan.
Las soluciones de copia de seguridad compatibles con contenedores capturan volúmenes persistentes mientras mantienen la consistencia de la aplicación. Los objetivos de tiempo de recuperación (RTO), a menudo medidos en minutos, se vuelven alcanzables cuando los sistemas de copia de seguridad comprenden la organización de contenedores. La ubicación de los datos afecta significativamente el rendimiento. Las plataformas de almacenamiento de alto rendimiento utilizan la programación de localidades para mantener los contenedores cerca de sus datos, lo que reduce la latencia.
La implementación exitosa de la virtualización de contenedores requiere una planificación cuidadosa en torno a la selección, organización y seguridad de la plataforma.
Docker sigue siendo una de las herramientas de contenedores más utilizadas en entornos de desarrollo, con frecuencia clasificada en o cerca de la cima en encuestas de adopción de desarrolladores. En los entornos de producción de Kubernetes, los contenedores se utilizan comúnmente como el tiempo de ejecución del contenedor, incluso en servicios gestionados como Amazon EKS y Google GKE. CRI-O proporciona un tiempo de ejecución de contenedor liviano y nativo de Kubernetes optimizado para implementaciones solo de Kubernetes.
Kubernetes se ha convertido en el estándar de facto con una participación de mercado del 77 % en la organización de contenedores. Automatiza la implementación, el escalamiento y la administración a través de la configuración declarativa: describe lo que desea y Kubernetes garantiza coincidencias de realidad.
Existen orquestadores alternativos para casos de uso específicos: Docker Swarm para implementaciones más pequeñas, Amazon ECS para la integración con AWS y HashiCorp Nomad para cargas de trabajo heterogéneas. Elija según los requisitos de escala, la experiencia del equipo y la infraestructura existente.
La seguridad de contenedores requiere cambiar de modelos basados en perímetro a modelos de confianza cero. Cada contenedor necesita políticas de seguridad individuales en lugar de depender de los límites de la red. El escaneo de imágenes identifica las vulnerabilidades antes de la implementación: los registros líderes marcan automáticamente los contenedores con CVE conocidos.
La seguridad de la cadena de suministro se vuelve fundamental al usar imágenes públicas. Las organizaciones implementan la firma de imágenes, los registros privados y la estandarización de imágenes base para garantizar la procedencia del contenedor. Los motores de políticas aplican reglas como “sin vulnerabilidades críticas en la producción” o “todos los contenedores deben ejecutarse como usuarios no raíz”.
La portabilidad de contenedores alcanza su máximo potencial en implementaciones multinube, pero muchas organizaciones luchan con la administración de la nube cruzada. El desafío no es ejecutar contenedores en varias nubes, sino operarlos de manera eficiente en diversos entornos.
La verdadera portabilidad en la nube requiere abstraer los servicios específicos de la nube. En lugar de acoplar estrechamente las aplicaciones a los servicios de nube nativos, las organizaciones utilizan abstracciones y operadores de mayor nivel para ofrecer capacidades consistentes en todos los entornos.
Los contenedores multinube permiten un sofisticado arbitraje de costos. La organización de instancias puntuales puede reducir costos, pero varía según la nube y la región. Las plataformas avanzadas implementan la optimización entre nubes teniendo en cuenta los precios al contado, los costos de salida de datos y las variaciones regionales.
Las leyes de residencia de datos complican las implementaciones multinube. La ubicación basada en políticas utiliza controladores de admisión para aplicar el cumplimiento automáticamente. Las etiquetas indican la clasificación de datos, mientras que las políticas de colocación garantizan que los contenedores solo se ejecuten en regiones que cumplan con los requisitos.
La virtualización de contenedores cambia fundamentalmente la forma en que se crean, implementan y administran las aplicaciones. Al compartir el kernel del OS operativo mientras se mantienen los espacios de usuarios aislados, los contenedores ofrecen beneficios medibles: implementaciones más rápidas, ahorros en infraestructura y escalabilidad casi instantánea.
Sin embargo, el éxito requiere comprender tanto las capacidades como las limitaciones. Si bien los contenedores se destacan en los microservicios sin estado, el almacenamiento persistente sigue siendo el reto fundamental para determinar el éxito de la producción. Las organizaciones que abordan la arquitectura de almacenamiento de forma temprana evitan la costosa refactorización más adelante.
Ya sea modernizando las aplicaciones heredadas o creando un sistema nativo en la nube, la virtualización de contenedores ofrece valor cuando se implementa con la arquitectura de almacenamiento adecuada.
Portworx® proporciona una plataforma de servicios de datos nativa de Kubernetes diseñada específicamente para aplicaciones en contenedores. A diferencia de las soluciones de almacenamiento modernizadas para contenedores, Portworx se integra directamente con Kubernetes para ofrecer aprovisionamiento automatizado, protección de datos y recuperación ante desastres para volúmenes persistentes.
La plataforma aborda los desafíos persistentes del almacenamiento descritos en este artículo. El aprovisionamiento de volumen automatizado elimina la configuración de almacenamiento manual. Las snapshots compatibles con las aplicaciones mantienen la consistencia en todas las bases de datos distribuidas. La movilidad de datos entre nubes permite una verdadera portabilidad sin el bloqueo del proveedor.
Cuando se combinan con Everpure FlashArray™ o FlashBlade//S™, las organizaciones obtienen un rendimiento de almacenamiento de nivel empresarial en cargas de trabajo en contenedores. Esta integración admite los objetivos de tiempo de recuperación mientras mantiene la ubicación de los datos para las aplicaciones sensibles a la latencia. Pure1® proporciona monitoreo basado en AI en la infraestructura de contenedores y almacenamiento, lo que brinda a los equipos de operaciones una visibilidad unificada del rendimiento y la capacidad.
Acceda a videos y demostraciones según demanda para ver lo que Everpure puede hacer.
Charlie Giancarlo explica por qué la administración de datos, no el almacenamiento, es el futuro. Descubra cómo un enfoque unificado transforma las operaciones de TI de una empresa.
Cuadrante Mágico™ de Gartner® 2025 para plataformas de almacenamiento empresarial.