¿Qué son los contenedores?
Explorar las soluciones de contenedores de IBM Suscríbase para recibir actualizaciones sobre la nube
Ilustración con collage de pictogramas de monitor de ordenador, servidor, nubes, puntos
¿Qué son los contenedores?

Los contenedores son unidades ejecutables de software en las que el código de la aplicación se empaqueta junto con sus bibliotecas y dependencias, de forma común para que el código pueda ejecutarse en cualquier lugar, ya sea en un equipo de sobremesa, en las TI tradicionales o en la nube.

Los contenedores se benefician de una forma de virtualización del sistema operativo (SO) en la que se pueden utilizar características del núcleo del SO (por ejemplo, los espacios de nombres y cgroups de Linux, los silos y objetos de trabajo de Windows) para aislar procesos y controlar la cantidad de CPU, memoria y disco a la que pueden acceder dichos procesos.

Los contenedores son pequeños, rápidos y portátiles porque, a diferencia de las Virtual Machines, no necesitan incluir un sistema operativo huésped en cada instancia. En su lugar, pueden limitarse a utilizar las características y los recursos del sistema operativo anfitrión.

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

La modernización estratégica de las aplicaciones impulsa la transformación digital

La modernización estratégica de las aplicaciones es una de las claves del éxito de la transformación capaz de aumentar los ingresos anuales y reducir los costes de mantenimiento y funcionamiento.

Contenido relacionado

Regístrese para obtener la guía sobre DaaS

Contenedores frente a Virtual Machines

Una forma de entender mejor un contenedor es comprender en qué se diferencia de una Virtual Machine (VM) tradicional. En la virtualizacióntradicional, ya sea local o en la nube, se utiliza un hipervisor para virtualizar el hardware físico. A continuación, cada VM (máquina virtual) contiene un sistema operativo invitado y 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 (por lo general Linux) para que cada contenedor individual contenga solo la aplicación junto con sus bibliotecas y dependencias. Precisamente por la ausencia del sistema operativo invitado, los contenedores son tan ligeros y, por tanto, rápidos y portátiles.

Para profundizar en esta comparación, consulte "Containers vs. VMs: What's the difference?"

Beneficios de los contenedores

La principal ventaja de los contenedores, especialmente en comparación con una máquina virtual, es que proporcionan un nivel de abstracción que los hace ligeros y portátiles. Entre sus principales beneficios se incluyen estos:

Son muy ligeros: Los contenedores comparten el núcleo 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 de los contenedores sean pequeños y consuman pocos recursos. Su menor tamaño, especialmente en comparación con las máquinas virtuales, significa que los contenedores se pueden arrancar rápidamente y soportan mejor las aplicaciones nativas de la nube que escalan horizontalmente.

Portabilidad e independencia de la plataforma: Los contenedores portan consigo todas sus dependencias, lo que significa que el software puede escribirse una vez y ejecutarse sin necesidad de volver a configurarlo en ordenadores portátiles, en la nube y en entornos informáticos locales.

Soporte para desarrollo y arquitectura modernos: Debido a que combinan su portabilidad/consistencia de implementación en distintas plataformas y su reducido tamaño, los contenedores son ideales para el desarrollo y los patrones de aplicación modernos, como DevOps, serverless y microservicios, que se construyen gracias a implementaciones incrementales y regulares de pequeñas porciones de código..

Mejora la utilización: Al igual que las Virtual Machines antes de ellos, los contenedores permiten a los desarrolladores y operadores optimizar la utilización de la CPU y la memoria de las máquinas físicas. Pero en lo que los contenedores van aún más allá es en la posibilidad de implementar y escalar los componentes de las aplicaciones de forma más granular, ya que también admiten la arquitectura de microservicios. Se trata de una alternativa atractiva frente a tener que escalar toda una aplicación monolítica porque un único componente tenga problemas con su carga.

En una reciente encuesta de IBM, tanto desarrolladores como ejecutivos de TI señalaron muchos más beneficios del uso de contenedores.

Descargue el informe completo: Containers in the enterprise

Casos de uso para contenedores

Los contenedores están adquiriendo cada vez más protagonismo, especialmente en los entornos de nube. Muchas organizaciones incluso están incluso considerando los contenedores como sustitutos válidos de las VMs como plataforma informática de uso general para sus aplicaciones y cargas de trabajo. Pero dentro de ese amplio alcance, hay casos de uso clave en los que los contenedores cobran especial relevancia.

  • Microservicios: Los contenedores son pequeños y ligeros, lo que los convierte en un buen complemento para las arquitecturas de microservicios, en las que las aplicaciones se construyen a partir de muchos servicios más pequeños, poco acoplados e implementables de forma independiente.
  • DevOps: La combinación de microservicios a modo de arquitectura y contenedores como plataforma es una base común para muchos equipos que adoptan DevOps como la forma en que construyen, envían y ejecutan software.
  • Nube híbrida y multi-nube: Como los contenedores pueden ejecutarse de forma consistente en cualquier lugar, tanto en ordenadores portátiles como en entornos locales y en la nube, son una arquitectura subyacente ideal para escenarios de nube híbrida y multinube en los que las organizaciones se encuentran operando a través de una mezcla de múltiples nubes públicas en combinación 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 la contenerización de aplicaciones como preparación para la migración a la nube.
Inclusión en contenedores

El software debe diseñarse y empaquetarse de forma diferente para beneficiarse de los contenedores, un proceso comúnmente denominado  contenerización.

Al contenerizar una aplicación, el proceso incluye empaquetarla con sus variables de entorno, archivos de configuración, bibliotecas y sus respectivas dependencias de software. El resultado es una imagen de contenedor que puede ejecutarse en una plataforma de contenedores.

Orquestación de contenedores con Kubernetes

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

Para hacer frente a este reto, la orquestación de contenedores surgió como una forma de gestionar grandes volúmenes de contenedores a lo largo de su ciclo de vida, incluyendo:

  • Suministro
  • Redundancia
  • Monitorización de comprobación de estado
  • asignación de recursos
  • Escalado y balanceo de carga
  • Movimiento entre hosts físicos

Si bien se crearon muchas plataformas de orquestación de contenedores (como Apache Mesos, Nomad y Docker Swarm), 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 del sector ha basado su estandarización.

Kubernetes permite a los desarrolladores y operadores declarar un estado deseado para su entorno general de contenedores a través de archivos YAML. Después, Kubernetes realiza todo el trabajo de procesamiento para establecer y mantener ese estado, con actividades que incluyen implementar un número especificado de instancias de una aplicación o carga de trabajo determinada, reiniciar esa aplicación si falla, equilibrar la carga, Auto-Scaling, implementaciones sin tiempo de inactividad y mucho más.

En la actualidad, Kubernetes está gestionado por la Cloud Native Computing Foundation (CNCF), que es un grupo del sector independiente de los proveedores que funciona bajo los auspicios de la Fundación Linux.

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

A medida que los contenedores siguen ganando impulso como un método habitual de empaquetar y ejecutar aplicaciones, el ecosistema de herramientas y proyectos diseñados para acomodar y ampliar los casos de uso en producción sigue creciendo. Más allá de Kubernetes, dos de los proyectos más populares en el ecosistema de los contenedores son ISTIO y Knative.

istio

A medida que los desarrolladores utilizan contenedores para construir y ejecutar arquitecturas de microservicios, las inquietudes en torno a su gestión van más allá de las consideraciones sobre el ciclo de vida de los contenedores individuales. La forma en que grandes cantidades de pequeños servicios, a menudo denominados "malla de servicios", se conectan y relacionan entre sí, ha pasado a ser un asunto importante. ISTIO se creó para facilitar a los desarrolladores la gestión entre otras cosas de los retos asociados a la detección, el tráfico, la supervisión y la seguridad. 

Más información sobre ISTIO

knative

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

En lugar de ejecutarse de manera permanente y responder cuando se la necesita (como hace un servidor), una función serverless puede "escalar a cero", lo que significa que no se ejecuta en absoluto a menos que se la llame. Este modelo puede ahorrar grandes cantidades de potencia de computación cuando se aplica a decenas de miles de contenedores.  

Soluciones relacionadas
Red Hat OpenShift on IBM Cloud

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

Explore Red Hat OpenShift on IBM Cloud
IBM Cloud Pak for Applications

Ya se trate de implementaciones, de crear nuevas aplicaciones nativas de la nube, de refactorizar o del replatforming de aplicaciones existentes, CP4Apps lo tiene cubierto.

Explorar IBM Cloud Pak for Applications
IBM Cloud Satellite

Con IBM Cloud Satellite, puede crear servicios coherentes en la nube en cualquier lugar, en entornos locales, en el límite y en la 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 dimensionar, implementar, conectar en red o escalar.

Explore IBM Cloud Code Engine
IBM Cloud Container Registry

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

Explore IBM Cloud Container Registry
Optimice Kubernetes con IBM Turbonomic

Determine automáticamente las acciones correctas de asignación de recursos, y cuándo realizarlas, para asegurarse de que sus entornos Kubernetes y aplicaciones de misión crítica obtienen exactamente lo que necesitan para cumplir sus objetivos estratégicos.

Explore IBM Turbonomic
Recursos Contenedores en la empresa

Una nueva investigación de IBM documenta el creciente impulso de la adopción de contenedores y Kubernetes.

Combine las mejores funciones 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 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 Kubernetes. Descargue las tareas tediosas y repetitivas que implican la gestión de la seguridad, la gestión de la conformidad, la gestión de la implementación y la gestión del ciclo de vida continuo. 

Explore Red Hat OpenShift on IBM Cloud Empiece gratis