La gestión de contenedores recorrió 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 empleó por primera vez para ayudar a definir el código de la aplicación en los sistemas Unix.
La tecnología moderna de contenerización avanzó de manera constante desde esos inicios, y cuando las compañías ejecutan contenedores ahora, obtienen mucha más utilidad por su inversión. Desde pequeñas compañías emergentes hasta grandes compañías establecido, los marcos de contenedores demostraron 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 donde el código de aplicación se empaqueta con sus bibliotecas y dependencias. Están empaquetados de manera estandarizada para que el código se pueda ejecutar en cualquier lugar, incluyendo computadoras de escritorio, 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 continuó sin cesar en esta década, ganando constantemente popularidad y aceptación por parte de los usuarios. Claramente, había una fuerte pero insatisfecha demanda en el mercado de software de contenedorización de este tipo, como lo 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 empleada es Docker. Los contenedores Docker se crearon originalmente en torno al motor Docker 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 tomar cualquier aplicación y sus dependencias asociadas y convertirla en un contenedor virtual, que luego se puede ejecutar en cualquier computadora con Windows, macOS o Linux. El sistema emplea imágenes Docker, que son plantillas de solo lectura que se emplean para crear contenedores, y Dockerfiles, que son archivos de texto que acompañan y explican las imágenes Docker. Las imágenes Docker y otras imágenes de contenedores requieren un espacio en el que ejecutar. 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 forma estable en que automatiza el despliegue 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 monitorear el proyecto), y cada proveedor de software le 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 sitio 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: ¿Por qué no ambos?”
No faltan casos de uso relacionados que involucran contenedores porque cada vez son más importantes, especialmente en entornos o ecosistemas de computación en la nube . Muchas organizaciones incluso están considerando los contenedores como reemplazo de las máquinas virtuales (VM) como su opción de plataforma de computación en la nube 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 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 a 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 del sistema son ideales para gestionar aplicaciones tradicionales y manejar aplicaciones monolíticas diseñadas para realizar una sola 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 un esfuerzo y equipamiento adicionales, pero paga dividendos. Las herramientas de orquestación de contenedores pueden facilitar una experiencia de contenedores más sencilla para sus entornos de producción, independientemente de dónde se encuentren sus productos en sus respectivos ciclos de vida.
Con los servicios de contenedores de IBM, basados en tecnologías de código abierto como Kubernetes, puede facilitar y acelerar su transición a la nube de una manera rápida, segura y productiva.