La gestión de contenedores ha recorrido un largo camino. Durante décadas, la gestión de entornos en contenedores fue un asunto relativamente sencillo. La idea moderna de un contenedor informático apareció originalmente en la década de 1970, y el concepto se utilizó por primera vez para ayudar a definir el código de aplicación en los sistemas Unix.
La tecnología moderna de contenerización ha avanzado de manera constante desde esos inicios, y cuando las empresas ejecutan contenedores ahora, obtienen mucha más utilidad por su inversión. Desde pequeñas startups hasta grandes empresas consolidadas, los marcos de contenedores han demostrado ser extremadamente capaces de generar flujos de trabajo estables con tiempos de ejecución optimizados y entrega continua.
Los contenedores son unidades ejecutables de software en las que el código de la aplicación se empaqueta con sus bibliotecas y dependencias. Están empaquetados de forma estandarizada para que el código pueda ejecutarse en cualquier lugar, incluido el escritorio, la TI tradicional o la nube.
Esto se realiza mediante una forma de virtualización del sistema operativo (SO) en la que se pueden utilizar características del núcleo del SO (por ejemplo, espacios de nombres y cgroups de Linux, silos y objetos de trabajo de Windows) para aislar procesos y controlar la cantidad de CPU, memoria y disco a los que pueden acceder esos procesos.
La tecnología de contenedores cambió fundamentalmente en 2013 con la introducción de Docker y ha continuado sin cesar en esta década, aumentando constantemente su popularidad y aceptación por parte de los usuarios. Claramente, existía una fuerte pero insatisfecha demanda en el mercado de software de contenerización de este tipo, como demuestra el rápido éxito de Docker y su ahora abrumadora superioridad en el mercado.
Una encuesta de IBM de 2021 reveló que el 61 % de los encuestados indicó que había utilizado contenedores en al menos el 50 % de las nuevas aplicaciones que había creado durante los últimos 2 años. Un grupo aún mayor de encuestados (64 %) informó que esperaba usar contenedores para al menos el 50 % de las aplicaciones que crearían en los próximos 2 años.
El objetivo de los contenedores es distribuir y proteger datos y ejecutar aplicaciones. Por lo tanto, tiene mucho sentido que las industrias de TI sean los principales usuarios del software de contenerización, con las siguientes industrias clasificadas como las tres principales beneficiarias (enlace externo a ibm.com):
El mercado de aplicaciones en contenedores está dominado actualmente por dos entidades:
La plataforma de contenerización más utilizada es Docker. Los contenedores Docker se crearon originalmente en torno a Docker Engine en 2013 y se ejecutan de acuerdo con una interfaz de programación de aplicaciones (API). Docker es en realidad una plataforma como servicio (PaaS) y su principal beneficio es su flexibilidad. Docker puede coger cualquier aplicación y sus dependencias asociadas y convertirla en un contenedor virtual, que puede ejecutarse en cualquier ordenador con Windows, macOS o Linux. El sistema utiliza imágenes de Docker, que son plantillas de solo lectura que se utilizan para crear contenedores, y Dockerfiles, que son archivos de texto que acompañan y explican las imágenes de Docker. Las imágenes de Docker y otras imágenes de contenedor requieren un espacio en el que ejecutarse. Esto lo gestiona el tiempo de ejecución del contenedor, una solución de software que interactúa con el sistema operativo para crear el espacio necesario para ejecutar imágenes de contenedores.
La plataforma de orquestación de contenedores más popular es Kubernetes, creada por Google en 2014 y sigue siendo popular por la sólida forma en la que automatiza la implementación de software, permite la escalabilidad y admite la gestión de contenedores. Además, Kubernetes es un sistema de código abierto y fomenta la participación ávida de los colaboradores (que ahora supervisan el proyecto), y cada proveedor de software da su propio giro a Kubernetes. Por ejemplo, con algunos servicios, los usuarios no solo pueden crear clústeres de Kubernetes, sino también implementar aplicaciones web escalables y analizar registros.
En la actualidad, Docker y Kubernetes son, con diferencia, las herramientas más utilizadas en relación con los contenedores de ordenadores. Según recientes proyecciones de contenerización (enlace externo a ibm.com) para 2024, Dockers ahora controla un enorme 82,8 % de este mercado, mientras que Kubernetes registra una cuota de mercado del 11,52 %.
Para obtener más información sobre cómo se relacionan Kubernetes y Docker, consulte “Kubernetes vs. Docker: Why Not Both?”
No faltan casos de uso relacionados con contenedores, ya que son cada vez más importantes, especialmente en entornos o ecosistemas de cloud computing. Muchas organizaciones hasta están considerando los contenedores como sustitutos de las máquinas virtuales (VM) como su opción de plataforma de cloud computing de uso 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 nativos de la nube son especialmente relevantes:
Los contenedores, la contenerización o la orquestación de contenedores también tienen en cuenta las siguientes soluciones relacionadas:
Hay dos tipos básicos de contenedores y cada uno sirve para un grupo diferente de tecnologías de contenedores:
También conocidos como "contenedores del sistema operativo", los contenedores del sistema le permiten ejecutar muchos procesos diferentes simultáneamente. Los contenedores de sistema son ideales para gestionar aplicaciones tradicionales y manejar aplicaciones monolíticas diseñadas para realizar una única función, expresada a través de un archivo ejecutable lógico. Estos contenedores también están equipados para alojar la arquitectura, las configuraciones y las herramientas necesarias para ejecutar máquinas virtuales. Como medida predeterminada, los contenedores del sistema prohíben los sistemas de archivos en capas.
Tecnologías de contenedores servidas: BSD Jails, Linux vServer, LXC, OpenVZ, Solaris Zones
Los contenedores de aplicaciones no son tan versátiles como los contenedores del sistema, que pueden ejecutar varios procesos al mismo tiempo. Los contenedores de aplicaciones llevan incluso ese nombre porque están pensados para servir a una aplicación llevando a cabo una y sólo una acción ejecutable. Los contenedores de aplicaciones existen para empaquetar y operar un solo servicio, y no admiten sistemas de archivos en capas.
Tecnologías de contenedores servidas: Docker, Rocket
La contenerización requiere algo más de esfuerzo y equipamiento, pero da sus frutos. Las herramientas de organización de contenedores pueden facilitar una experiencia de contenedores más sencilla para sus entornos de producción, sin importar en qué punto de su ciclo de vida se encuentren sus productos.
Con los servicios de contenedores de IBM, basados en tecnologías de código abierto como Kubernetes, puede facilitar y acelerar su viaje a la nube de una manera rápida, segura y productiva.