Inicio Temas containers ¿Qué son los contenedores?
Explore Red Hat OpenShift en IBM Cloud Registrarse para recibir actualizaciones en la nube
Ilustración con collage de pictogramas de monitor de computadora, servidor, nubes, puntos conectados

Publicado: 9 de mayo de 2024
Colaboradores: Stephanie Susnjara, Ian Smalley

¿Qué son los contenedores?

Los contenedores son unidades ejecutables de software que empaquetan el código de la aplicación junto con sus bibliotecas y dependencias. Permiten que el código se ejecute en cualquier entorno informático, ya sea de escritorio, de TI tradicional o de infraestructura 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.

Más portátil y eficiente en cuanto al uso de recursos que las máquinas virtuales (VM), los contenedores se convirtieron en las unidades de cálculo de facto de las aplicaciones modernas nativas de la nube. Además, los contenedores son críticos para la infraestructura de TI subyacente que impulsa la configuración de multinube híbrida, así como la combinación de nube privadanube pública y más de un servicio en la nube de más de un proveedor.

Según un informe de Business Research Insights1, el mercado global de tecnología de contenedores se valoró en 496.4 millones de dólares en 2021 y se espera que alcance los 3123.42 millones de dólares para 2031, con una tasa de crecimiento anual compuesto (CAGR) del 19.8 %.

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

Suscríbase al boletín de IBM

Contenedores versus máquinas virtuales

Una forma de comprender mejor un contenedor es examinar cómo difiere de una máquina virtual (VM) tradicional, que es una representación o emulación virtual de una computadora física. Una máquina virtual a menudo se denomina invitado, mientras que la máquina física en la que se ejecuta se denomina host.

La tecnología de virtualización hace posible las VM. Un hipervisor, una pequeña capa de software, asigna recursos informáticos físicos (por ejemplo, procesadores, memoria, almacenamiento) a cada VM. Mantiene cada VM separada de las demás para que no interfieran entre sí. 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. VMware fue uno de los primeros en desarrollar y comercializar tecnología de virtualización basada en hipervisores.

En lugar de virtualizar el hardware subyacente, la tecnología de contenedores virtualiza el sistema operativo (normalmente, Linux) para que cada contenedor contenga solo la aplicación y sus bibliotecas, archivos de configuración y dependencias. La ausencia del SO invitado es la razón por la que los contenedores son tan ligeros y, por lo tanto, más rápidos y portátiles.

Los contenedores y las máquinas virtuales no son mutuamente excluyentes. Por ejemplo, una organización podría aprovechar ambas tecnologías mediante la ejecución de contenedores en VM para aumentar el aislamiento y la seguridad, y aprovechar las herramientas ya instaladas con fines de automatización, copia de seguridad y monitoreo. 

Para obtener más información sobre esta comparación, consulte “Containers versus VMs: What’s the difference?” y vea el video:

Principales 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:

Ligeros

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 del contenedor sean pequeños y fáciles de utilizar. El tamaño más pequeño de un contenedor, especialmente en comparación con una VM, significa que puede funcionar rápidamente y admitir mejor aplicaciones nativas de la nube que escalan horizontalmente.

Portátiles e independientes 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 volver a configurarlo en entornos informáticos (por ejemplo, computadoras portátiles, en la nube y on premises).

Compatible con el desarrollo y la arquitectura modernos

Debido a una combinación de su portabilidad de implementación y coherencia en todas las plataformas y su pequeño tamaño, los contenedores son ideales para los patrones modernos de desarrollo y aplicación, como DevOpssin servidor y microservicios, que se crean mediante el despliegue de código regular en pequeños incrementos.

Utilización mejorada

Al igual que las VM, los contenedores permiten a los desarrolladores y operadores mejorar la utilización de la CPU y la memoria de las máquinas físicas. Los contenedores van aún más allá porque habilitan la arquitectura de microservicios para que los componentes de la aplicación puedan desplegarse y escalar de manera más granular. Esta es una alternativa atractiva a la ampliación de una aplicación monolítica completa porque un solo componente está lidiando con su carga.

Tiempo de comercialización más rápido

Los contenedores dependen menos de los recursos del sistema, lo que los hace más rápidos de gestionar y desplegar que las VM. Esta característica ayuda a ahorrar dinero y tiempo en el despliegue de aplicaciones y optimiza el tiempo de comercialización. 

En una encuesta de IBM, los desarrolladores y ejecutivos de TI señalaron muchos otros beneficios de los contenedores. Consulte el informe completo: Containers in the enterprise.

¿Qué es la contenerización?

Los contenedores dependen de la contenerización, el empaquetado del código de software con solo el sistema operativo (SO) y sus variables de entorno relevantes, archivos de configuración, bibliotecas y dependencias de software.

El resultado es una imagen de contenedor que se ejecuta en una plataforma de contenedores. Una imagen de contenedor representa datos binarios que encapsulan una aplicación y todas sus dependencias de software. 

La contenerización permite que las aplicaciones se “escriban una vez y se ejecuten en cualquier lugar”, lo cual da portabilidad, acelera el proceso de desarrollo, evita el vendor lock-in (dependencia de proveedores) de la nube, entre otros aspectos. 

La evolución de la contenerización

La contenerización y el aislamiento de procesos existen desde hace décadas2. Un momento histórico en el desarrollo de contenedores ocurrió en 1979, con el desarrollo de chroot, parte del sistema operativo Unix versión 7. Con Chroot, se introdujo el concepto de aislamiento de procesos mediante la restricción del acceso a los archivos de una aplicación a un directorio específico (la raíz) y sus elementos secundarios (o subprocesos).

Otro hito importante se produjo en 2008, cuando se implementaron contenedores de Linux (LXC) en el kernel de Linux, lo que permitió la virtualización por completo para una única instancia de Linux. A lo largo de los años, las tecnologías como FreeBSD jails y Workload Partitions para AIX ofrecieron una virtualización similar a nivel de sistema operativo.

Si bien LXC sigue siendo un tiempo de ejecución bien conocido y es parte de la distribución de Linux y del proyecto independiente del proveedor3, existen tecnologías de kernel de Linux más modernas. Ubuntu, un sistema operativo Linux moderno y de código abierto, también ofrece esta capacidad. 

Vea el video para investigar a profundidad la contenerización:

Docker y la era moderna de los contenedores

La mayoría de los desarrolladores consideran el año 2013 como el comienzo de la era moderna de contenedores con la introducción de Docker. Docker, una plataforma de software de contenerización de código abierto que funciona como una plataforma como servicio (PaaS), permite a los desarrolladores crear, desplegar, ejecutar, actualizar y gestionar contenedores.

Docker emplea el kernel de Linux (el componente base del sistema operativo) y las características del kernel (como Cgroups y espacios de nombres) para separar los procesos para que puedan ejecutarse de forma independiente. Docker toma una aplicación y sus dependencias y las convierte en un contenedor virtual que puede ejecutarse en cualquier sistema informático que ejecute Windows, macOS o Linux.

Docker se basa en una arquitectura cliente-servidor, con Docker Engine como tecnología subyacente. Docker proporciona un modelo de despliegue basado en imágenes, lo que simplifica el uso compartido de aplicaciones en todos los entornos informáticos. 

Para aclarar cualquier confusión, la plataforma de contenedores Docker también se refiere a Docker, Inc.4, que desarrolla herramientas de productividad basadas en su plataforma de contenerización de código abierto y el ecosistema y la comunidad de código abierto Docker5.

En 2015, Docker y otros líderes de la industria de los contenedores establecieron The Open Container Initiative6 , parte de la Linux Foundation, una estructura de gobernanza abierta con el propósito expreso de crear estándares abiertos de la industria en cuanto a formatos de contenedores y entornos de tiempo de ejecución.

Docker es la herramienta de contenerización más usada, con una cuota de mercado del 82.84 %.7

Orquestación de contenedores con Kubernetes

Operar cientos de miles de contenedores en un sistema puede volverse inmanejable y requiere una solución de gestión de orquestación. 

Ahí es donde entra en juego la orquestación de contenedores, lo que permite a las empresas gestionar grandes volúmenes según su estilo de vida y brinda: 

  • Aprovisionamiento
  • Redundancia
  • Monitoreo de salud
  • asignación de recursos
  • Escalado y equilibrio de carga
  • Moverse entre hosts físicos

Mientras que existen otras plataformas de orquestación de contenedores (por ejemplo, Apache Mesos, Nomad, Docker Swarm), Kubernetes se ha convertido en el estándar de la industria.

La arquitectura de Kubernetes consiste en ejecutar clústeres que permiten que los contenedores se ejecuten en múltiples máquinas y entornos. Cada clúster suele constar de nodos trabajadores, que ejecutan las aplicaciones en contenedores, y nodos de plan de control, que controlan el clúster. El plan de control actúa como orquestador del clúster de Kubernetes. Incluye varios componentes: el servidor de API (gestiona todas las interacciones con Kubernetes), el administrador de control (maneja todos los procesos de control), el administrador del controlador de la nube (la interfaz con la API del proveedor de la nube), etc. Los nodos de trabajador ejecutan contenedores mediante tiempos de ejecución de contenedores, como Docker. Los pods, las unidades desplegables más pequeñas de un clúster, contienen uno o más contenedores de aplicaciones y comparten recursos, como información de almacenamiento y redes.

Kubernetes permite a los desarrolladores y operadores declarar el estado deseado de su entorno general de contenedores a través de archivos YAML. Luego, Kubernetes hace todo el trabajo de procesamiento para establecer y mantener ese estado, con actividades que incluyen desplegar una cantidad específica de instancias de una aplicación o carga de trabajo determinada, reiniciar esa aplicación si falla, equilibrar la carga, escalar de manera automática, desplegar sin tiempo de inactividad, entre otros aspectos. La orquestación de contenedores con Kubernetes también es crucial para la integración y la entrega continuas (CI/CD) o el proceso de DevOps, lo cual sería imposible sin la automatización.

En 2015, Google donó Kubernetes a Cloud Native Computing Foundation (CNCF)8, el centro de computación nativa de la nube de código abierto e independiente del proveedor operado bajo los auspicios de Linux Foundation. Desde entonces, Kubernetes se convirtió en la herramienta de orquestación de contenedores más empleada para ejecutar cargas de trabajo basadas en contenedores en todo el mundo. Kubernetes es el segundo proyecto de código abierto más grande del mundo (luego de Linux) y la principal herramienta de orquestación de contenedores para el 71 % de las empresas de Fortune 100. 

¿Qué son los contenedores como servicio (CaaS)?

Contenedores como servicio (CaaS) es un servicio de computación en la nube que permite a los desarrolladores gestionar y desplegar aplicaciones en contenedores, lo cual da a las empresas de todos los tamaños acceso a soluciones en la nube portátiles y escalables.

CaaS proporciona una plataforma basada en la nube donde los usuarios pueden optimizar los procesos de virtualización y gestión de contenedores basados en contenedores. Los proveedores de CaaS ofrecen innumerables características, que incluyen (entre otras) tiempos de ejecución de contenedores, capas de orquestación y gestión de almacenamiento persistente.

Al igual que la infraestructura como servicio (IaaS), la plataforma como servicio (PaaS) y el software como servicio (SaaS), CaaS está disponible a través de proveedores de servicios en la nube (por ejemplo, AWS, Google Cloud Services, IBM® Cloud, Microsoft Azure) a través de un modelo de precios de pago por uso, que permite a los usuarios pagar solo por los servicios que usan. 

Casos de uso para contenedores

Las organizaciones usan contenedores para admitir lo siguiente:

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 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 de desarrollo y operaciones que adoptan metodologías DevOps. Por ejemplo, los contenedores admiten los pipelines de DevOps, incluida la integración continua y el despliegue continuo (CI/CD).

Híbridos y multinube

Dado que los contenedores pueden ejecutarse de forma 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 operan 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 en preparación para la migración a la nube.

Cargas de trabajo de IA y ML

La contenerización (es decir, las imágenes Docker orquestadas con Kubernetes) permite rápidamente que los canales DevOps desplieguen aplicaciones de inteligencia artificial (IA) y aprendizaje automático (ML) en entornos de computación en la nube.

IA generativa

Los contenedores también ofrecen una forma eficiente de desplegar y gestionar los modelos de lenguaje grandes (LLM) asociados con la IA generativa, que brinda portabilidad y escalabilidad cuando se emplean con herramientas de orquestación. Además, los cambios realizados en los LLM se pueden empaquetar rápidamente en una nueva imagen de contenedor, lo que acelera el desarrollo y las pruebas.

El ecosistema de contenedores más amplio: Istio y Knative

Además de Kubernetes, dos de los proyectos más populares en el ecosistema de contenedores son Istio y Knative.

Malla de servicio 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 facilita a los desarrolladores la gestión de los desafíos asociados con el descubrimiento, el tráfico, la seguridad y otros aspectos. 

Knative y sin servidor

KNative es una plataforma de código abierto que proporciona una fácil acceso a la computación sin servidor, el modelo de desarrollo y ejecución de aplicaciones de computación en la nube que permite a los desarrolladores crear y ejecutar código de aplicaciones sin aprovisionar ni gestionar servidores o infraestructura de backend.

 En lugar de desplegar una instancia continua de código que permanece inactiva mientras se esperan solicitudes, un modelo sin servidor trae el código según sea necesario, escalándolo hacia arriba o hacia abajo a medida que fluctúa la demanda y, a continuación, elimina el código cuando no está en uso. El sistema sin servidor evita el desperdicio de capacidad y potencia de cómputo, y reduce los costos porque usted solo paga para ejecutar el código cuando se está ejecutando.

Seguridad y gobernanza de contenedores

Dado que los contenedores desempeñan un papel importante en el desarrollo y despliegue de software en escenarios de nube híbrida, las organizaciones deben cerciorarse de que sus cargas de trabajo en contenedores permanezcan a salvo de amenazas de seguridad externas e internas.

Los contenedores pueden desplegarse en cualquier lugar, lo que crea nuevas superficies de ataque que rodean el entorno basado en contenedores. Las áreas de seguridad vulnerables incluyen imágenes de contenedores, registros de imágenes, tiempos de ejecución de contenedores, plataformas de orquestación de contenedores y sistemas operativos de host.

Para empezar, las empresas deben integrar la seguridad de los contenedores en sus políticas de seguridad y en su estrategia general. Dichas estrategias deben incluir las mejores prácticas de seguridad junto con herramientas de software de seguridad basadas en la nube. Este enfoque holístico debe diseñarse para proteger las aplicaciones en contenedores y su infraestructura subyacente a lo largo de todo el ciclo de vida de un contenedor.

Las mejores prácticas de seguridad incluyen una estrategia de confianza cero que asume que la seguridad de una red compleja siempre corre el riesgo de amenazas externas e internas. Además, los contenedores requieren un enfoque DevSecOps. DevSecOps es una práctica de desarrollo de aplicaciones que automatiza la integración de prácticas de seguridad en cada fase del ciclo de vida del desarrollo de software, desde el diseño inicial hasta la integración, las pruebas, la entrega y el despliegue.

Las organizaciones también necesitan aprovechar las herramientas de seguridad de contenedores adecuadas para mitigar los riesgos. Las soluciones de seguridad automatizadas incluyen gestión de configuración, control de acceso, escaneo en busca de malware o ataques cibernéticos, segmentación de redes, monitoreo, entre otras. 

Además, hay herramientas de software disponibles para garantizar que las cargas de trabajo en contenedores cumplan con los estándares normativos, como el RGPD, la HIPAA, etc.

Soluciones relacionadas
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloud utiliza Red Hat 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, Cloud Pak for Applications (CP4Apps) lo resuelve.

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
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
IBM Fusion

El software Fusion se ejecuta en cualquier lugar donde se ejecuta Red Hat OpenShift: en la nube pública, on premises, bare metal y máquinas virtuales. Fusion proporciona una manera fácil de desplegar aplicaciones Red Hat OpenShift e IBM® watsonx.

Explore IBM Fusion
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.

¿Tiene una estrategia de contenedores?

La contenerización desempeña un papel crucial en el desarrollo de aplicaciones modernas. En este video, Chris Rosen recorre cuatro casos de uso para el desarrollo de software y las operaciones de TI que le ayudarán a maximizar el rendimiento y el tiempo de actividad, minimizar los costos, mantenerse ágil y cumplir con la normativa.

¿Qué es Kubernetes?

Kubernetes, también conocida como k8s o kube, es una plataforma de orquestación de contenedores de código abierto diseñada para programar y automatizar el despliegue, la gestión y el escalamiento de aplicaciones en contenedores.

¿Qué es el equilibrio de carga?

El equilibrio de carga es el proceso de distribución del tráfico de red de manera eficiente entre varios servidores para optimizar la disponibilidad de las aplicaciones y garantizar una experiencia positiva para el usuario final.

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