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 comprende diferentes capas de imagen apiladas una encima de la otra. Las imágenes de contenedor 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 contenedores) que sirve como un tipo de sistema de archivos. Los registros de contenedores son repositorios de datos (o múltiples repositorios) que almacenan imágenes de contenedores para almacenamiento y/o acceso.
Un beneficio 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 emplear en una capacidad DevOps durante el desarrollo de aplicaciones basadas en contenedores, lo que permite una integración del flujo de trabajo optimizada.
Una imagen de contenedor es una acumulación ensamblada de capas que incluyen lo siguiente:
En las nuevas imágenes construidas 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 "compilación") permite a los desarrolladores construir un entorno estandarizado, que admite imágenes de contenedor personalizadas.
Luego, se agrega una sucesión de capas del sistema de archivos y se apilan sobre la imagen base, incluidas las siguientes:
Para las imágenes contenedoras que incorporan imágenes existentes, la imagen base de las imágenes existentes se conoce como Imagen Padre. Si una imagen es totalmente original, se dice que no tiene Imagen Padre.
Las imágenes de contenedores se almacenan en registros de contenedores, donde las imágenes pueden ser almacenadas en ese registro de contenedores ("empujar") o descargarse en un sistema diferente ("extracción").
Los registros de contenedores utilizan almacenamiento de objetos para manifestar metadatos sobre imágenes de contenedores. Esto ofrece un medio para transferir con éxito tales metadatos, pero es limitado. Por ejemplo, en el caso de los datos que incluyen varias imágenes, hay límites en el número posible de etiquetas de listado disponibles.
Los contenedores de dependencia ofrecen otro método de almacenamiento de información. Estos contenedores permiten la administració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.
Considerando la urgente necesidad de seguridad en línea, la autenticación de las personas a las que se les concede acceso a los repositorios es esencial. La autenticación utiliza una serie de permisos específicos para ese registro de contenedores. Los permisos definen quién está autorizado para usar los Recursos 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 que los contenedores operen 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 contenedores e imágenes de contenedores:
Docker es un sistema de orquestación de contenedores que reduce la complejidad de crear, desplegar y ejecutar aplicaciones. Docker se considera una forma sencilla de crear contenedores livianos y autónomos que puedan ejecutar 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 el despliegue de microservicios, al permitir al usuario empaquetarlos 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. Un servicio de registro de contenedores de pago también está disponible para uso privado. Las imágenes de Docker utilizan una interfaz de línea de comandos de Docker (CLI de Docker) que permite operaciones clave como inicio de sesión, inserción y extracción. Los usuarios crean imágenes Docker con la característica Docker Build de Docker Engine, que permite empaquetar y agrupar el código fuente. Docker se puede configurar mediante archivos de configuración de notación de objetos JavaScript (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, el despliegue y el escalado. En un servicio de Kubernetes, una o más computadoras (ya sean máquinas virtuales o servidores bare metal) están vinculadas en un clúster de Kubernetes, donde se pueden ejecutar cargas de trabajo de contenedores de diferentes tamaños y tipos. El servidor de la interfaz de programación de aplicaciones (API) de Kubernetes configura datos para objetos de API como pods, servicios, controladores de replicación, etc. Las API permiten que diferentes aplicaciones de software se comuniquen y compartan datos en plena cooperación entre sí.
Si bien Docker y Kubernetes brindan 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 que admite Kubernetes.
Las imágenes de contenedores son un componente clave del uso del registro de contenedores.
Las imágenes de contenedor están pensadas y diseñadas para contener todo lo necesario para ejecutar un contenedor. Una vez que se han creado las imágenes de contenedor, todo lo que se necesita para ejecutar los contenedores son las instrucciones adecuadas del sistema informático. Esto hace que las imágenes de contenedores sean perfectamente adecuadas para una implementación rápida.
Las prioridades empresariales suelen cambiar de la noche a la mañana. Al crear imágenes de contenedores con anticipación, una organización puede predecir todas sus necesidades potenciales de contenedores y luego seleccionar los contenedores más adecuados para ese momento y propósito. Las imágenes de contenedores brindan a las organizaciones la capacidad de pivotar según lo dicten las condiciones.
La seguridad de las imágenes de contenedores se mantiene mediante controles de acceso implementados por los registros de contenedores. Estos incluyen protocolos de autenticación para garantizar que a personas no autorizadas se les niegue el acceso a las imágenes del contenedor. Hoy en día, el cifrado de imágenes se emplea de forma rutinaria para codificarlas y protegerlas de vulnerabilidades.
Las siguientes actividades hacen un uso extensivo de las imágenes de contenedor:
Los despliegues basados en contenedores, potenciados por el uso de imágenes de contenedores, admiten arquitecturas nativas de la nube y les proporcionan 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 en ellos) 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 software en una computadora para imitar las funciones de otra computadora. Los ViM tienen una relación única con las imágenes de contenedores. Los usuarios suelen sustituir las máquinas virtuales como sistema operativo host por contenedores, en lugar de ejecutar contenedores directamente en el hardware, especialmente cuando los contenedores deben ejecutarse en la nube.
El mercado de proveedores de imágenes de contenedores es fluido y dinámico, con mucha actividad y numerosos actores de la industria que entran y salen del mercado. Sin embargo, estos proveedores han construido una reputación duradera 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 y despliegue rápido.
Desbloquee nuevas capacidades e impulse la agilidad empresarial con los servicios de IBM de asesoramiento sobre la nube. Descubra cómo crear conjuntamente soluciones, acelerar la transformación digital y optimizar el rendimiento a través de estrategias de nube híbrida y asociaciones de expertos.