¿Qué son los contenedores?
Explore las soluciones de contenedores de IBM Suscríbase para recibir actualizaciones de la nube
Ilustración con collage de pictogramas de monitor de computadora, 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 manera común, para que el código pueda ejecutarse en cualquier lugar, ya sea en un escritorio, en TI tradicional o en la nube.

Los contenedores usan 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 de Linux, silos de Windows y objetos de trabajo) se pueden usar para aislar procesos y controlar la cantidad de CPU, memoria y disco a los que pueden acceder esos procesos.

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

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 los contenedores con la introducción de Docker.

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

La modernización estratégica de aplicaciones es una clave para el éxito transformacional que puede aumentar los ingresos anuales y reducir los costos de mantenimiento y funcionamiento.

Contenido relacionado

Regístrese para recibir la guía sobre DaaS

Contenedores versus máquinas virtuales

Una forma de comprender mejor un contenedor es entender cómo se diferencia de una máquina virtual (VM) tradicional. En la virtualizacióntradicional, ya sea on premises o en la nube, se utiliza un hipervisor para virtualizar el hardware físico. Cada VM contiene un SO invitado y una copia virtual del hardware que el SO necesita para funcionar, 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) de manera que cada contenedor individual contiene solo la aplicación y sus bibliotecas y dependencias. La ausencia del SO invitado es la razón por la que los contenedores son tan ligeros y, por lo tanto, rápidos y portátiles.

Para obtener más información sobre 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 VM, es que proporcionan un nivel de abstracción que los hace ligeros y portátiles. Sus principales beneficios incluyen:

Ligero: los contenedores comparten el kernel del SO de la máquina, lo que elimina la necesidad de una instancia completa del SO por aplicación y hace que los archivos de contenedor sean pequeños y fáciles de utilizar. Su tamaño más pequeño, especialmente en comparación con las VM, significa que los contenedores pueden funcionar rápidamente y admitir mejor las aplicaciones nativas de la nube que se 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 ejecutarse sin necesidad de reconfigurarlo en computadoras portátiles, en la nube y en entornos informáticos on premises.

Compatible con el desarrollo y la arquitectura modernos: debido a una combinación de su portabilidad/coherencia de despliegue a través de plataformas y su pequeño tamaño, los contenedores son un ajuste ideal para el desarrollo moderno y los patrones de aplicación, como DevOpssin servidor y microservicios, quese crean mediante el uso de despliegues de código regulares en pequeños incrementos.

Mejora la utilización: al igual que las VM anteriores a ellas, 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 en que, dado que también permiten la arquitectura de microservicios, los componentes de la aplicación pueden desplegarse y escalarse de forma más granular. Se trata de una opción atractiva en comparación con tener que escalar toda una aplicación monolítica porque un único componente tiene problemas con su carga.

En una encuesta reciente de IBM, los desarrolladores y ejecutivos de TI informaron muchos otros beneficios de usar contenedores.

Descargar el informe completo: Containers in the enterprise

Casos de uso para contenedores

Los contenedores son cada vez más prominentes, especialmente en entornos de nube. Muchas organizaciones incluso están considerando los contenedores como un reemplazo de las VM como plataforma informática de propósito general para sus aplicaciones y cargas de trabajo. Pero dentro de ese amplio alcance, existen casos de uso clave donde los contenedores son especialmente relevantes.

  • Microservicios: los contenedores son pequeños y ligeros, lo que los convierte en una buena opción para las arquitecturas de microservicios donde las aplicaciones se crean a partir de muchos servicios más pequeños y poco acoplados, y que se pueden desplegar 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.
  • Nube híbrida y multinube: debido a que los contenedores pueden ejecutarse de manera coherente en cualquier lugar, en computadoras portátiles, on premises y en entornos de nube, son una arquitectura subyacente ideal para escenarios de nube híbrida y multinube en los que las organizaciones se encuentran operando en una combinación 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 incluir las aplicaciones en contenedores en preparación para la migración 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 los contenedores, a menudo como parte de arquitecturas modernas nativas de la nube, la simplicidad del contenedor individual comenzó a colisionar con la complejidad de gestionar cientos (o 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, incluyendo:

  • Aprovisionamiento
  • Redundancia
  • Monitoreo de salud
  • asignación de recursos
  • Escalado y equilibrio de carga
  • Moverse 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 de la industria ha basado su estandarización.

Kubernetes permite a los desarrolladores y operadores declarar un estado deseado de su entorno de contenedor general a través de archivos YAML y, a continuación, Kubernetes realiza todo el trabajo de procesamiento de establecer y mantener ese estado, con actividades que incluyen el despliegue de un número específico de instancias de una aplicación o carga de trabajo determinada, el reinicio de esa aplicación si se produce un error, el equilibrio de carga, el escalado automático, despliegues sin tiempo de inactividad y mucho más.

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

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 acomodar 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

A medida que los desarrolladores utilizan contenedores para crear y ejecutar arquitecturas de microservicios, las preocupaciones de gestión van más allá de las consideraciones del ciclo de vida de los contenedores individuales y se centran en las formas en que un gran número de pequeños servicios, a menudo denominados "malla de servicios", se conectan y relacionan entre sí. Istio se creó para facilitar a los desarrolladores la gestión de los desafíos asociados con el descubrimiento, el tráfico, el monitoreo, la seguridad y más. 

Aprenda más sobre Istio

knative

Las arquitecturas sin servidor también siguen ganando popularidad, especialmente dentro de la comunidad nativa de la nube. Knative, por ejemplo, ofrece un valor sustancial en su capacidad para desplegar servicios en contenedores como funciones sin servidor.

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

Soluciones relacionadas
Red Hat OpenShift on IBM Cloud

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

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

Ya sea despliegue, creación de nuevas aplicaciones nativas de la nube, refactorización o cambio de plataforma de aplicaciones existentes, CP4Apps lo respalda.

Explore IBM Cloud Pak for Applications
IBM Cloud Satellite

Con IBM Cloud Satellite, puede lanzar servicios de nube consistentes en cualquier lugar, en el perímetro 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 dimensionar, desplegar, establecer redes o escalar.

Conozca BM 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.

Explorar IBM Cloud Container Registry
Optimice Kubernetes con IBM Turbonomic

Determine automáticamente las acciones de asignación de recursos adecuadas, y cuándo realizarlas, para ayudar a garantizar que sus entornos Kubernetes y las aplicaciones de misión crítica obtengan exactamente lo que necesitan para cumplir sus SLO.

Explorar 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 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 administrar cargas de trabajo desde cualquier lugar.

¿Qué es Docker?

Docker es una plataforma de código abierto para crear, desplegar 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. Descargue tareas tediosas y repetitivas que impliquen gestión de seguridad, gestión de cumplimiento, gestión de implementación y gestión continua del ciclo de vida. 

Explore Red Hat OpenShift en IBM Cloud Empiece sin costo