Iniciar sesión / Registrar Cuenta

Contenedores

Los contenedores en comparación con las máquinas virtuales

Las máquinas virtuales (VM) y los contenedores de Linux® son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema. Las principales diferencias radican en la capacidad de ampliación y la portabilidad.

  • Por lo general, los contenedores se miden en megabytes. El elemento más grande que empaquetan es una aplicación y todos los archivos necesarios para su ejecución. También suelen utilizarse para empaquetar funciones individuales que realizan tareas específicas (conocidas como microservicios). La naturaleza ligera de los contenedores y su sistema operativo (SO) compartido permiten trasladarlos entre los distintos entornos con mucha facilidad.
  • Por lo general, las máquinas virtuales se miden en gigabytes. Suelen tener su propio sistema operativo, lo cual les permite realizar varias funciones con uso intensivo de los recursos al mismo tiempo. Las máquinas virtuales cuentan con una mayor cantidad de recursos disponibles, lo cual les permite extraer, dividir, duplicar y simular sistemas operativos, escritorios, bases de datos, conexiones de red y servidores completos.

Más allá de las diferencias tecnológicas, la comparación entre los contenedores y las máquinas virtuales es una comparación indirecta entre las prácticas de TI nuevas y las arquitecturas de TI tradicionales.

Las prácticas de TI nuevas (el desarrollo nativo de la nube, la CI/CD y DevOps) son posibles porque las cargas de trabajo se dividen en las unidades de servicio más pequeñas posibles, normalmente una función o un microservicio. La mejor manera de empaquetar estas unidades es en contenedores, ya que permiten que varios equipos trabajen en partes individuales de una aplicación o un servicio sin interrumpir o poner en peligro el código empaquetado en otros contenedores.

En el caso de las arquitecturas de TI tradicionales (monolíticas y heredadas), todos los aspectos de las cargas de trabajo se almacenan en un solo archivo grande, que no puede dividirse y, en consecuencia, necesita empaquetarse como una unidad completa dentro de un entorno más grande, que normalmente es una máquina virtual. Antes era común diseñar y ejecutar una aplicación completa dentro de una máquina virtual. Sin embargo, el que todo el código y las dependencias se almacenaran en un solo lugar dio como resultado máquinas virtuales de gran tamaño que sufrían fallas en cascada y downtime al implementar las actualizaciones.

¿Cuál debería utilizar?

Eso depende de si necesita una instancia pequeña de algo que se pueda trasladar con facilidad (contenedores) o de si necesita una asignación semipermanente de recursos personalizados de TI.

Debido a que los contenedores son pequeños y ligeros, pueden trasladarse con facilidad entre los equipos sin sistema operativo, así como entre los entornos de nube pública, privada, híbrida y multicloud. También son el entorno ideal para implementar las aplicaciones nativas de la nube actuales. Estas consisten en colecciones de microservicios diseñadas para proporcionar un desarrollo uniforme y una experiencia de gestión automatizada en los entornos de nube pública, privada, híbrida y multicloud. Las aplicaciones nativas de la nube agilizan el diseño de aplicaciones nuevas, la optimización de las actuales y la conexión entre todas ellas. Tenga en cuenta que los contenedores deben ser compatibles con el sistema operativo subyacente. Si comparamos los contenedores con las máquinas virtuales, son mejores para las siguientes funciones:

  • Diseñar aplicaciones nativas de la nube
  • Empaquetar microservicios
  • Implantar gradualmente las prácticas de DevOps o CI/CD
  • Trasladar proyectos de TI escalables a todo un footprint de TI diverso con el mismo sistema operativo

Las máquinas virtuales pueden ejecutar muchas más operaciones que un contenedor individual. Por eso se han utilizado para empaquetar las cargas de trabajo monolíticas (incluso en la actualidad). Sin embargo, esa capacidad para ofrecer más funciones reduce su portabilidad, debido a su dependencia del sistema operativo, las aplicaciones y las bibliotecas. Si comparamos las máquinas virtuales con los contenedores, son mejores para las siguientes funciones:

  • Alojar cargas de trabajo tradicionales, monolíticas y heredadas
  • Aislar ciclos de desarrollo riesgosos
  • Implementar recursos de infraestructura (como redes, servidores y datos)
  • Ejecutar un sistema operativo diferente dentro de otro sistema operativo (por ejemplo, ejecutar Unix en Linux)

¿Cómo funcionan?

Virtualización

El software llamado hipervisor separa los recursos de las máquinas físicas para que puedan dividirse y destinarse a las máquinas virtuales. Cuando un usuario emite una instrucción de una máquina virtual que requiere recursos adicionales del entorno físico, el hipervisor transmite la solicitud al sistema físico y almacena los cambios en la memoria caché. Las máquinas virtuales parecen servidores físicos y actúan como tales, lo que puede multiplicar las desventajas de las dependencias de las aplicaciones y los grandes footprints del sistema operativo. Incluso, en la mayoría de los casos, ese footprint no se necesita para ejecutar una sola aplicación o microservicio.

Contenedores

Los contenedores contienen un microservicio o una aplicación y todo lo que necesita para ejecutarse. Lo que está dentro de un contenedor se conserva en lo que llamamos imagen: un archivo basado en un código que incluye todas las bibliotecas y las dependencias. Estos archivos pueden considerarse una instalación de la distribución de Linux, porque la imagen viene con paquetes RPM y archivos de configuración. Como los contenedores son tan pequeños, suele haber cientos de ellos con un nivel de acoplamiento bajo, así que se utilizan plataformas de organización de contenedores (como Red Hat OpenShift y Kubernetes) para configurarlos y gestionarlos.

¿Por qué Red Hat?

Porque desde hace mucho tiempo respaldamos la virtualización y el desarrollo en contenedores. Cooperamos con las comunidades de máquina virtual basada en el kernel (KVM) y oVirt desde su fundación, y somos el segundo colaborador principal de las bases de código Docker y Kubernetes. También invertimos en el futuro de ambas tecnologías. Nuestra participación en la virtualización nativa de los contenedores, KubeVirt y la infraestructura hiperconvergente mejoran la forma en que los contenedores y las máquinas virtuales trabajan en conjunto como parte del mismo sistema de TI.

Todo lo que necesita para poner en marcha los contenedores y las máquinas virtuales

Red Hat OpenShift Logo

Desarrolle, implemente y gestione sus contenedores a cualquier escala y en cualquier lugar.

Implemente docenas o cientos de máquinas virtuales con un hipervisor que pueda administrarlas y una plataforma de gestión que simplifique esta tarea.