¿Qué son los contenedores?
Conozca la importancia de los contenedores en la computación en la nube, sus principales beneficios y el ecosistema emergente de tecnologías relacionadas, como Docker, Kubernetes, Istio y Knative
Suscríbase al boletín de noticias de IBM
Fondo negro y azul con formas geométricas agrupadas
¿Qué son los contenedores?

Los contenedores son unidades ejecutables de software en las que se empaqueta el código de la aplicación, junto con sus bibliotecas y dependencias, junto con sus bibliotecas y dependencias, para que puedan ejecutarse en cualquier lugar, ya sea en el desktop, en sistemas informáticos tradicionales o en la nube.

Para ello, los contenedores aprovechan una forma de virtualización del sistema operativo (SO) en la que las características del kernel del SO (por ejemplo, espacios de nombres y cgroups Linux, silos de Windows y objetos de trabajo) se aprovechan para aislar procesos y controlar la cantidad de CPU, memoria y disco a los que esos procesos pueden acceder.

Los contenedores son pequeños, rápidos y portátiles porque, a diferencia de una máquina virtual, no necesitan incluir un sistema operativo invitado en cada instancia y, en su lugar, pueden simplemente aprovechar las características del sistema y los recursos del host operativo.

Los contenedores aparecieron por primera vez hace décadas con versiones como FreeBSD Jails y AIX Workload Partitions, pero la mayoría de los desarrolladores modernos recuerdan 2013 como el inicio de la era moderna de contenedores con la introducción de Docker.

Contenedores frente a máquinas virtuales

Para entender mejor lo que es un contenedor, veamos en qué se diferencia de una máquina virtual (VM) tradicional. En la virtualización tradicional, ya sea en las instalaciones o en la nube, se aprovecha un hipervisor para virtualizar el hardware físico. Luego, cada máquina virtual contiene un sistema operativo invitado, una copia virtual del hardware que el sistema operativo necesita para ejecutarse, junto con una aplicación y sus bibliotecas y dependencias asociadas.

En lugar de virtualizar el hardware subyacente, los contenedores virtualizan el sistema operativo (normalmente Linux) para que cada contenedor individual contenga solo la aplicación y sus bibliotecas y dependencias. La ausencia del sistema operativo invitado es el motivo por el que los contenedores son tan ligeros y, por lo tanto, rápidos y portátiles.

Para obtener una perspectiva más profunda de esta comparación, consulte "Contenedores frente a máquinas virtuales: ¿cuál es la diferencia?"

Beneficios de los contenedores

La principal ventaja de los contenedores, especialmente en comparación con una máquina virtual, es proporcionar un nivel de abstracción que los hace ligeros y portátiles. Sus principales beneficios son:

Ligero: los contenedores comparten el kernel del sistema operativo de la máquina, lo que elimina la necesidad de una instancia completa del sistema operativo por aplicación y hace que los archivos del contenedor sean pequeños y fáciles de utilizar. Su tamaño más pequeño, especialmente en comparación con las máquinas virtuales, significa que pueden funcionar rápidamente y dar un mejor soporte a las aplicaciones nativas en la nube que escalan horizontalmente.

Portátil e independiente de la plataforma: los contenedores llevan consigo todas sus dependencias, lo que significa que el software se puede escribir una vez y luego ejecutar sin necesidad de volver a configurarlo en computadoras portátiles, en la nube y en entornos informáticos locales.

Dan soporte a un desarrollo y una arquitectura modernos: gracias a la combinación de portabilidad y consistencia de implementación entre plataformas y su pequeño tamaño, los contenedores son una opción ideal para patrones de aplicaciones y desarrollo modernos, como DevOpssin servidor y microservicios, que se crean como implementaciones de código regulares en pequeños incrementos.

Mejora la utilización: al igual que las máquinas virtuales anteriores, los contenedores permiten a los desarrolladores y operadores mejorar la utilización de la CPU y la memoria de las máquinas físicas. Donde los contenedores van aún más lejos es que, debido a que también permiten arquitecturas de microservicios, los componentes de la aplicación se pueden implementar y escalar de manera más granular, lo que proporciona una alternativa atractiva para escalar una aplicación monolítica completa cuando un solo componente tiene dificultades para soportar la carga.

En una encuesta reciente de IBM (PDF, 1.4 MB), los desarrolladores y ejecutivos de TI informaron sobre muchos otros beneficios del uso de contenedores.

Descargue el informe completo: Contenedores en la empresa (PDF, 1.4 MB)

Casos de uso para contenedores

Los contenedores son cada vez más importantes, especialmente en entornos de nube. Muchas empresas incluso están considerando reemplazar las máquinas virtuales con contenedores como plataforma informática general para sus aplicaciones y cargas de trabajo. Pero dentro de este ámbito de uso muy amplio, hay casos de uso clave en los que los contenedores son particularmente relevantes.

  • Microservicios: los contenedores son pequeños y ligeros, lo que los convierte en una buena solución para las arquitecturas de microservicios, donde las aplicaciones se crean a partir de muchos servicios pequeños, débilmente acoplados e implementables de forma independiente.
  • DevOps: la combinación de microservicios como arquitectura y contenedores como plataforma es una base común para muchos equipos que adoptan DevOps como la forma en que crean, envían y ejecutan software.
  • Híbrido, multinube: debido a que los contenedores pueden ejecutarse de manera consistente en cualquier lugar (en computadoras portátiles, en las instalaciones y en entornos de nube), son una arquitectura subyacente ideal para escenarios de nube híbrida y multinube, donde las organizaciones tienen que operar en una combinación de múltiples nubes públicas con su propio centro de datos.
  • Modernización y migración de aplicaciones: uno de los enfoques más comunes para la modernización de aplicaciones es colocarlas en contenedores para que puedan migrarse a la nube.
Contenerización

El software debe diseñarse y empaquetarse de manera diferente para aprovechar los contenedores, un proceso comúnmente conocido como contenerización.

Al contenerizar una aplicación, el proceso incluye empaquetar una aplicación con sus variables de entorno relevantes, archivos de configuración, bibliotecas y dependencias de software. El resultado es una imagen de contenedor que luego se puede ejecutar en una plataforma de contenedor.

Orquestación de contenedores con Kubernetes

A medida que las empresas comenzaron a adoptar contenedores, a menudo como parte de arquitecturas modernas nativas de la nube, la simplicidad del contenedor individual comenzó a chocar con la complejidad de gestionar cientos (incluso miles) de contenedores en un sistema distribuido.

Para abordar este desafío, la orquestación de contenedores surgió como una forma de gestionar grandes volúmenes de contenedores a lo largo de su ciclo de vida, que incluyen:

  • Suministro
  • Redundancia
  • Supervisión del estado
  • Asignación de recursos
  • Escalamiento y equilibrio de carga
  • Movimiento entre hosts físicos

Si bien muchas plataformas de orquestación de contenedores (como Apache Mesos, Nomad y Docker Swarm) se crearon para ayudar a abordar estos desafíos, Kubernetes, un proyecto de código abierto presentado por Google en 2014, se convirtió rápidamente en la plataforma de orquestación de contenedores más popular, y es en la que la mayoría de la industria se ha estandarizado.

Kubernetes permite a los desarrolladores y operadores declarar un estado deseado de su entorno de contenedor general a través de archivos YAML. Luego Kubernetes hace todo el trabajo pesado para establecer y mantener ese estado, con actividades como implementar un número específico de instancias de una determinada aplicación o carga de trabajo, reiniciar esa aplicación en caso de falla, equilibrar la carga, escalar automáticamente, implementar sin tiempo de inactividad y más.

Kubernetes ahora es operado por Cloud Native Computing Foundation (CNCF), que es un grupo industrial independiente del proveedor bajo la supervisión de Linux Foundation.

El siguiente video describe cómo funciona Kubernetes:

Istio, Knative y el ecosistema de contenedores en expansión

A medida que los contenedores continúan ganando impulso como una forma popular de empaquetar y ejecutar aplicaciones, el ecosistema de herramientas y proyectos diseñados para fortalecer y expandir los casos de uso de producción continúa creciendo. Además de Kubernetes, dos de los proyectos más populares en el ecosistema de contenedores son Istio y Knative.

Istio

Cuando los desarrolladores usan contenedores para crear y ejecutar arquitecturas de microservicios, las preocupaciones de la gestión se extienden más allá de las consideraciones del ciclo de vida del contenedor individual y se refieren a cómo se conectan y relacionan entre sí grandes cantidades de pequeños servicios (a menudo denominados "malla de servicios"). Istio se creó para facilitar a los desarrolladores la gestión de los desafíos asociados con el descubrimiento, el tráfico, la supervisión, la seguridad y más. 

Descubra más acerca de Istio

Knative

Las arquitecturas sin servidor también continúan creciendo en popularidad, particularmente dentro de la comunidad nativa en la nube. Knative, por ejemplo, ofrece un valor sustancial en su capacidad para implementar servicios en contenedores como funciones sin servidor.

En lugar de ejecutarse todo el tiempo y responder cuando es necesario (como lo hace un servidor), una función sin servidor puede "escalar a cero", lo que significa que no se ejecuta en absoluto a menos que se solicite. Este modelo puede ahorrar grandes cantidades de potencia informática cuando se aplica a decenas de miles de contenedores. 

El siguiente video explica más acerca de Knative:

Soluciones relacionadas
Red Hat® OpenShift® on IBM® Cloud

Red Hat OpenShift on IBM Cloud aprovecha OpenShift en entornos públicos e híbridos para obtener velocidad, capacidad de respuesta al mercado, escalabilidad y confiabilidad.

Explore Red Hat OpenShift on IBM® Cloud
IBM® Cloud Satellite

Con IBM® Cloud Satellite, puede implementar servicios de nube consistentes en cualquier lugar: en las instalaciones, en el borde y en entornos de nube pública.

Explore IBM® Cloud Satellite
IBM® Cloud Code Engine

Ejecute imágenes de contenedores, trabajos por lotes o código fuente como cargas de trabajo sin servidor, sin necesidad de dimensionamiento, implementación, redes o escalado.

Explore IBM® Cloud Code Engine
IBM® Cloud Container Registry

IBM® Cloud Container Registry le brinda un registro privado que le permite gestionar sus imágenes y supervisarlas en busca de problemas de seguridad.

Explore IBM® Cloud Container Registry
Recursos Contenedores en la empresa

Una nueva investigación de IBM documenta la dinámica creciente en la adopción de contenedores y Kubernetes.

Combine las mejores características de la nube y la TI tradicional

La orquestación de contenedores es un componente clave de una estrategia de nube híbrida abierta que le permite crear y gestionar cargas de trabajo desde cualquier lugar.

¿Qué es Docker?

Docker es una plataforma de código abierto para crear, implementar y gestionar aplicaciones en contenedores.

Dé el siguiente paso

Red Hat OpenShift on IBM Cloud ofrece a los desarrolladores una forma rápida y segura de contenerizar e implementar cargas de trabajo empresariales en clústeres de Kubernetes. Con él, puede liberarse de las tareas tediosas y repetitivas relacionadas con la gestión de seguridad, la gestión de conformidad, la gestión de implementación y la gestión continua del ciclo de vida. Debido a que IBM gestiona OpenShift Container Platform (OCP), tendrá más tiempo para centrarse en sus tareas principales.

Explore Red Hat OpenShift on IBM® Cloud