¿Qué son los contenedores?
Nube y datos de Leadspace
Contenedores

Esta guía explica la importancia de los contenedores en la computación en nube, destaca los beneficios principales y recorre el ecosistema emergente de tecnologías relacionadas a lo largo de Docker, Kubernetes, Istio y Knative.

Contenedores en la empresa

Lea el e-book (PDF, 1,4 MB)


¿Qué son los contenedores?

Los contenedores son unidades ejecutables de software en que el código de aplicación se empaqueta, junto con sus bibliotecas y dependencias, de manera común para que se pueda ejecutar en cualquier lugar, ya sea en el escritorio, en la TI tradicional o en la nube.

Para hacer esto, los contenedores aprovechan una forma de virtualización del sistema operativo (SO) en la que las características del SO (en el caso del kernel de Linux, a saber, los espacios de nombres y las primitivas de cgroups) se aprovechan para aislar procesos y controlar la cantidad de CPU, memoria y disco a los que tienen acceso 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 sistema operativo invitado en cada instancia y pueden, en cambio, simplemente aprovechar las características y recursos del sistema operativo 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 comienzo de la era moderna de contenedores con la introducción de  Docker.

TI flexible, resistente y segura para su nube híbrida

Conozca más

Red Hat OpenShift on IBM Cloud

IBM Cloud Satellite


Contenedores vs. máquinas virtuales (VM)

Una forma de comprender mejor un contenedor es entender en qué se diferencia de una  máquina virtual (VM) tradicional. En la tradicional virtualización, ya sea en las instalaciones o en la nube, un hipervisor  se aprovecha para virtualizar hardware físico. Cada VM contiene un SO huésped, 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 huésped 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 VM, es proporcionar un nivel de abstracción que los hace livianos y portátiles.

  • 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 contenedor sean pequeños y fáciles de usar. Su tamaño más pequeño, especialmente en comparación con las máquinas virtuales, significa que pueden girar rápidamente y brindar un mejor soporte. nativo de la nube  aplicaciones 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.
  • Apoya el desarrollo y la arquitectura modernos: Debido a una combinación de su portabilidad / consistencia de implementación en todas las plataformas y su pequeño tamaño, los contenedores son ideales para el desarrollo moderno y los patrones de aplicación, como DevOpssin servidor, y microservicios — que se construyen son implementaciones de código regulares en pequeños incrementos.
  • Mejora la utilización: al igual que las VM 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 porque también permiten el microservicio  arquitecturas, los componentes de la aplicación se pueden implementar y escalar de manera más granular, una alternativa atractiva a tener que escalar una aplicación monolítica completa porque un solo componente está luchando con 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 organizaciones incluso están considerando los contenedores como reemplazo de las VM como plataforma informática de propósito general para sus aplicaciones y cargas de trabajo. Pero dentro de ese alcance tan amplio, hay casos de uso clave en los que los contenedores son especialmente relevantes.

  • Microservicios: los contenedores son pequeños y ligeros, lo que los convierte en una buena combinación para las arquitecturas de microservicios donde las aplicaciones se construyen a partir de muchos servicios más 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íbridos, multinube: debido a que los contenedores pueden ejecutarse de manera uniforme en cualquier lugar, en entornos portátiles, 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 en una combinación de múltiples nubes públicas en combinación con su propio centro de datos.
  • Migración y modernización de aplicaciones: uno de los enfoques más comunes para modernización de aplicaciones comienza por contenerlos para que puedan ser migrados a la nube .

Contenedorización

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

Al contenedorizar 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. Para obtener más información, consulte este video sobre "Explicación de la contenedorización" (08:09):

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 administrar cientos (incluso miles) de contenedores en un sistema distribuido.

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

  • Aprovisionamiento
  • Redundancia
  • Supervisión del estado
  • Asignación de recursos
  • Escalación y  balanceo 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, y luego Kubernetes hace todo el trabajo pesado para establecer y mantener ese estado, con actividades que incluyen la implementación de un número específico  de  instancias de  una  aplicación o carga de trabajo dada, reiniciar esa aplicación si falla, equilibrar la carga, escalar automáticamente, implementar sin tiempo de inactividad  y más.

Para obtener más información sobre Kubernetes, Sai Vennam ofrece una descripción general de Kubernetes en el  video a continuación (10:59):

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

 


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. Más allá de Kubernetes, dos de los proyectos más populares en el ecosistema de contenedores son Istio y Knative.

Istio

A medida que los desarrolladores aprovechan los contenedores para crear y ejecutar arquitecturas de microservicios, las preocupaciones de la administración van más allá de las consideraciones del ciclo de vida de los contenedores individuales y entran en la forma en que una gran cantidad de pequeños servicios, a menudo denominados "malla de servicios", se conectan y se 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, la supervisión, la seguridad y más. Para obtener más información sobre Istio, consulte "¿Qué es Istio?"y vea este video explicativo de Istio  (05:06):

Knative

Las arquitecturas sin servidor también continúan creciendo en popularidad, particularmente dentro de la comunidad nativa en la nube. El gran valor de Knative es 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.

Para obtener más información sobre Knative, vea este video llamado "¿Qué es Knative?" (07:58):


Contenedores e IBM Cloud

Los servicios de contenedor de IBM Cloud se basan en tecnologías de código abierto para facilitar y acelerar su recorrido hacia la nube. Cree aplicaciones en contenedores utilizando herramientas de integración continua y entrega continua (CI / CD). Organice los contenedores utilizando Red Hat OpenShift o servicios Kubernetes. Y modernice las aplicaciones existentes con el middleware de IBM en contenedores y los componentes de código abierto en IBM Cloud Paks.

Más información acerca de contenedores en IBM Cloud.

Regístrese para obtener un IBMid y cree su cuenta de IBM Cloud.

 


Soluciones relacionadas

Almacenamiento para contenedores

Lleve los servicios de datos y de almacenamiento persistentes a los contenedores mediante IBM Storage for Red Hat OpenShift


Soluciones de seguridad de contenedores

Cree, implemente y supervise herramientas de seguridad de contenedores en todas partes


Contenedores en IBM Cloud

Ejecute cargas de trabajo en contenedores con el liderazgo de seguridad, innovación de código abierto y funcionalidades de nivel empresarial de IBM Cloud