Las imágenes de contenedor son archivos estáticos inmutables que contienen código ejecutable y funcionan de forma aislada en la infraestructura de TI.
Una imagen de contenedor reúne todos los componentes necesarios para crear un contenedor en un sistema operativo y se compone de diferentes capas de imágenes apiladas una encima de la otra. Las imágenes de los contenedores son inmutables y comparten las mismas funciones que las plantillas.
Las imágenes de contenedor se almacenan dentro de un registro de imágenes de contenedor (o registro de contenedor) que sirve como un tipo de sistema de archivos. Los registros de contenedores son repositorios de datos (o varios repositorios) que almacenan imágenes de contenedores para almacenamiento y/o acceso.
Una ventaja notable de los registros de contenedores es la facilidad con la que se conectan a sistemas/plataformas de orquestación de contenedores como Kubernetes y Docker. Además, los registros de contenedores se pueden utilizar en una capacidad DevOps durante el desarrollo de aplicaciones basadas en contenedores, lo que permite una integración optimizada del flujo de trabajo.
La imagen de un contenedor es una acumulación ensamblada de capas que incluye lo siguiente:
En las nuevas imágenes creadas desde cero, todo comienza con la capa inferior, la imagen base. La imagen base es donde comienzan la mayoría de los flujos de trabajo de desarrollo basados en contenedores. Muchas imágenes base comprenden distribuciones básicas o mínimas de Linux (como Debian, Ubuntu, Red Hat Enterprise Linux (RHEL), Rocky Linux o Alpine). Las imágenes base son donde se almacenan los archivos del sistema de archivos del contenedor. El proceso de creación de imágenes base (conocido como "construcción") permite a los desarrolladores construir un entorno estandarizado, que admite imágenes de contenedores personalizadas.
A continuación, se añade una sucesión de capas del sistema de archivos y se apilan sobre la imagen base, incluidas las siguientes:
En el caso de las imágenes de contenedor que incorporan imágenes existentes, la imagen base de las imágenes existentes se conoce como imagen principal. Si una imagen es totalmente original, se dice que no tiene imagen principal.
Las imágenes de contenedores se almacenan en registros de contenedores, donde las imágenes pueden almacenarse en ese registro ("inserción") o descargarse en un sistema diferente ("extracción").
Los registros de contenedores utilizan el almacenamiento de objetos para manifestar metadatos sobre imágenes de contenedores. Esto ofrece un medio para transferir con éxito dichos metadatos, pero es limitado. Por ejemplo, en el caso de datos que involucran varias imágenes, existen límites en el número posible de etiquetas de listado disponibles.
Los contenedores de dependencias ofrecen otro método de almacenamiento. Estos contenedores permiten la gestión, registro y resolución de dependencias dentro de una aplicación. Las dependencias describen situaciones en las que un objeto o proceso debe ocurrir antes de que otro objeto pueda funcionar según lo ordenado.
Teniendo en cuenta la imperiosa necesidad de seguridad en línea, es esencial la autenticación de las personas a las que se concede acceso a los repositorios. La autenticación utiliza una serie de permisos específicos para ese registro de contenedores. Los permisos definen quién está autorizado a utilizar los recursos informáticos de un registro de contenedores.
El concepto de tiempos de ejecución es de vital importancia. Los tiempos de ejecución de contenedores son software que permite a los contenedores operar dentro de un sistema host. Los tiempos de ejecución de contenedores utilizan una serie de pasos para llevar a cabo la creación de contenedores. Estos pasos abarcan todo el proceso de formación de contenedores e inicialización de su entorno, guiados por una imagen de contenedor que contiene la aplicación y sus dependencias.
Hay dos proveedores de orquestación de contenedores que son fundamentales para el uso de los contenedores y las imágenes de los contenedores:
Docker es un sistema de orquestación de contenedores que reduce la complejidad de crear, implementar y ejecutar aplicaciones. Docker se considera una forma sencilla de crear contenedores livianos y autónomos que puedan ejecutarse en cualquier plataforma, a pesar de la infraestructura particular. Dado que se pueden mover de una máquina a otra, los contenedores Docker también ofrecen una portabilidad suprema. Además, Docker proporciona un medio estándar para la implementación de microservicios, al permitir al usuario empaquetar microservicios como imágenes de contenedores.
El recurso de imágenes de Docker es DockerHub, que ofrece acceso gratuito a más de 100 000 imágenes y otros archivos Docker compartidos por usuarios de Docker, proveedores de software y proyectos de código abierto. También hay disponible un servicio de registro de contenedores de pago para uso privado. Las imágenes Docker utilizan una interfaz de línea de comandos Docker (Docker CLI) que permite operaciones clave como el inicio de sesión, inserción y extracción. Los usuarios crean imágenes Docker con la característica Docker Build del motor Docker, que permite empaquetar y agrupar el código fuente. Docker puede configurarse utilizando archivos de configuración de JavaScript Object Notation (JSON). JSON es el formato preferido porque mantiene todas las configuraciones en un solo lugar.
Kubernetes es una plataforma de código abierto para la orquestación de contenedores. Kubernetes se utiliza para automatizar numerosos procesos de software, como la gestión, la implementación y el escalado. En un servicio Kubernetes, uno o varios equipos (ya sean máquinas virtuales o servidores bare metal) se enlazan en un clúster, donde pueden ejecutarse cargas de trabajo de contenedores de distintos tamaños y tipos. El servidor de la interfaz de programación de aplicaciones (API) de Kubernetes configura los datos de los objetos de la API como pod, servicios, controladores de replicación y así sucesivamente. Las API permiten que diferentes aplicaciones de software se intercomuniquen y compartan datos en plena cooperación entre sí.
Aunque Docker y Kubernetes ofrecen servicios similares, difieren en su respectivo sentido de escala. Docker es un tiempo de ejecución de contenedores, pero Kubernetes es una plataforma completa que acomoda contenedores de múltiples tiempos de ejecución de contenedores. Docker es solo uno de los tiempos de ejecución de contenedores compatibles con Kubernetes.
Las imágenes de contenedores son un componente clave del uso del registro de contenedores.
Las imágenes de los contenedores están pensadas y diseñadas para contener todo lo necesario para hacer funcionar un contenedor. Una vez que se han creado las imágenes de contenedor, todo lo que se necesita para ejecutar contenedores es la solicitud adecuada del sistema informático. Esto hace que las imágenes de contenedores se adapten perfectamente a una aplicación rápida.
Las prioridades empresariales a menudo cambian de la noche a la mañana. Al disponer de imágenes de contenedores creadas con antelación, las organizaciones pueden prever todas sus necesidades potenciales de contenedores y, posteriormente, seleccionar los contenedores más adecuados para ese momento y propósito. Las imágenes de contenedores brindan a las organizaciones la capacidad de adaptarse según lo dicten las condiciones.
La seguridad de la imagen del contenedor se garantiza mediante controles de acceso aplicados por los registros de contenedores. Estos incluyen protocolos de autenticación para garantizar que se deniegue el acceso a las imágenes de contenedor a las personas no autorizadas. Hoy en día, el cifrado de imágenes se utiliza de forma rutinaria para codificarlas y protegerlas de vulnerabilidades.
Las siguientes actividades hacen un uso extensivo de imágenes de contenedor:
Las implementaciones basadas en contenedores, potenciadas por el uso de imágenes de contenedores, respaldan las arquitecturas nativas de la nube y les brindan el aislamiento y la flexibilidad necesarios. Los contenedores y las imágenes de contenedores permiten a los usuarios crear y optimizar aplicaciones escalables y nativas de la nube.
Muchos registros de contenedores (y las imágenes de contenedores que contienen) ayudan a los usuarios de microservicios aclarando el proceso de localización y conexión a un microservicio específico dentro de un clúster de contenedores.
Las máquinas virtuales (VM) son sistemas informáticos que utilizan el software de un ordenador para imitar las funciones de otro ordenador. Las VM tienen una relación única con las imágenes de los contenedores. Los usuarios suelen sustituir las máquinas virtuales por contenedores como sistema operativo anfitrión, en lugar de ejecutar contenedores directamente en el hardware, especialmente cuando los contenedores tienen que funcionar en la nube.
El mercado de proveedores de imágenes de contenedores es fluido y dinámico, con mucha actividad y numerosos actores de sectores que entran y salen del mercado. Sin embargo, estos proveedores han construido reputaciones duraderas en este mercado:
Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.
Las soluciones de contenedores ejecutan y amplían cargas de trabajo en contenedores con seguridad, innovación de código abierto e implementación rápida.
Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de consultoría de nube de IBM. Descubra cómo cocrear soluciones, acelerar la transformación digital y optimizar el rendimiento mediante estrategias de nube híbrida y colaboraciones con expertos.