¿Qué es una imagen de contenedor?

Empresario sentado en un banco frente al edificio de oficinas con un ordenador portátil

Autores

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

¿Qué es una imagen de contenedores?

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.

Vista aérea de autopista

Mantenga su cabeza en la nube

Reciba el boletín semanal Think para obtener orientación de expertos sobre cómo optimizar la configuración multinube en la era de la IA.

¿Cómo se crean las imágenes de contenedores?

La imagen de un contenedor es una acumulación ensamblada de capas que incluye lo siguiente:

  • Imagen base
  • Bibliotecas
  • Binarios
  • Dependencias
  • Archivos de configuración

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:

  • Las bibliotecas necesarias, que son colecciones estándar de algoritmos y plantillas de clases que los programadores pueden utilizar para crear estructuras de datos comunes (por ejemplo, listas, pilas y colas)
  • Los binarios necesarios, que son archivos ejecutables necesarios para la implementación de diferentes programas y comandos. Las carpetas binarias están diseñadas para que los usuarios puedan tener acceso rápido a los ejecutables necesarios.
  • Varias dependencias, que rigen la creación y el funcionamiento de los contenedores.
  • Archivos de configuración (configs) necesarios para ejecutar el contenedor en cuestión.

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.

AI Academy

Cómo prepararse para la IA con la nube híbrida

El plan de estudios, dirigido por los principales líderes de pensamiento de IBM, está diseñado para ayudar a los líderes empresariales a adquirir los conocimientos necesarios para priorizar las inversiones en IA que pueden impulsar el crecimiento.

¿Cómo funcionan las imágenes de contenedores?

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").

Almacenamiento de objetos

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.

Contenedores de dependencias

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.

Autenticación

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.

Tiempos de ejecución 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.

Docker y Kubernetes

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

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

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.

Beneficios de la imagen de contenedor

Las imágenes de contenedores son un componente clave del uso del registro de contenedores.

Implementación rápida

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.

Disposición constante

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.

Uso seguro

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.

Casos de uso de imágenes de contenedores

Las siguientes actividades hacen un uso extensivo de imágenes de contenedor:

Aplicaciones nativas de la nube

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.

Microservicios

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.

Máquinas virtuales

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.

Principales proveedores de imágenes de contenedores

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:

  • Amazon: Amazon Web Services (AWS) opera Amazon Elastic Container Registry (ECR), incorporando el uso de Amazon Inspector, que gestiona el escaneo de vulnerabilidades de las imágenes de contenedores. ECR también admite la replicación entre cuentas y entre regiones, lo que facilita el acceso a las imágenes.
  • Apache: Apache es un software de servidor web de código abierto que está disponible de forma gratuita y es ofrecido por la Apache Software Foundation, que estima que el software Apache se ejecuta en aproximadamente el 30 % de todos los servidores web.
  • GitHub: la plataforma GitHub (ahora propiedad de Microsoft) ha ganado un amplio apoyo por parte de los desarrolladores, que aprecian la forma en que este software propietario permite compartir código, gestionar el código y colaborar.
  • IBM: IBM Cloud Container Registry permite a los usuarios iniciar fácilmente su propio registro y comenzar a enviar imágenes privadas al registro, para su uso con IBM Cloud Kubernetes Service. Los usuarios se benefician de la privacidad de tener su propio registro totalmente gestionado. El servicio, que puede probarse sin coste alguno, tiene la característica de precios de pago por uso, por lo que los usuarios solo pagan por lo que consumen.
  • Microsoft: la plataforma Azure de Microsoft utiliza Azure Container Registry (ACR), que almacena imágenes Docker e imágenes de la Open Container Initiative (OCI), y admite artefactos OCI. La característica de registro conectado de ACR (parte del nivel de servicio premium del programa) construye una réplica local o remota que sincroniza las imágenes de contenedor y los artefactos OCI con el ACR basado en la nube, que puede alojar tanto imágenes de Windows como imágenes de Linux. Un método para interactuar con programas informáticos consiste en escribir e introducir líneas de texto, también conocidas como líneas de comandos. Los sistemas operativos que utilizan este método de interacción incorporan una interfaz de línea de comandos (CLI). La mayoría de los usuarios de ordenadores confían ahora en las interfaces gráficas de usuario (GUI), aunque las CLI siguen siendo preferidas por quienes escriben scripts como parte de los esfuerzos de automatización. Azure ofrece a los usuarios la flexibilidad de utilizar Docker CLI para ejecutar operaciones clave de imagen de contenedor.
  • Python: Python es un lenguaje de programación interpretado, orientado a objetos y de alto nivel que ofrece la Python Software Foundation. Sus estructuras de datos integradas hacen que Python sea perfecto para las cargas de trabajo que requieren un desarrollo rápido de aplicaciones. La principal ventaja de Python para los programadores de software es su facilidad de uso, en gran parte debido a la falta de un paso de compilación. Esto permite a los programadores utilizar un ciclo de depuración acelerado, lo que ahorra tiempo.
  • Red Hat: Red Hat ha defendido la programación basada en Linux desde la creación de la empresa en 1993. El registro de contenedores que ofrece Red Hat, OpenShift Container Platform (OCP), permite a los usuarios acceder automáticamente a repositorios de imágenes bajo demanda y también proporciona a los usuarios una ubicación estándar para enviar las imágenes resultantes de las compilaciones de aplicaciones.
Soluciones relacionadas
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud es una plataforma de contenedores OpenShift (OCP) totalmente gestionada.

Descubra Red Hat OpenShift
Soluciones de contenedores

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.

Explore los contenedores
Servicios de consultoría en la nube 

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.

Servicio en la nube
Dé el siguiente paso

Modernice su infraestructura con las soluciones de contenedores de IBM. Ejecute, escale y gestione cargas de trabajo en contenedores en distintos entornos con flexibilidad, seguridad y eficiencia mediante la plataforma integral de contenedores de IBM.

Explore las soluciones de contenedores Cree su cuenta gratuita de IBM Cloud