¿Qué es una imagen de contenedor?

Un hombre de negocios sentado en un banco fuera del edificio de oficinas usando una computadora portátil

Autores

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

¿Qué es una imagen de contenedor?

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.

Vista aérea de una 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?

Una imagen de contenedor es una acumulación ensamblada de capas que incluyen lo siguiente:

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

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:

  • Bibliotecas requeridas , que son colecciones estándar de algoritmos y plantillas de clase que los programadores pueden usar para crear estructuras de datos comunes (por ejemplo, listas, pilas y colas)
  • 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) que se necesitan para ejecutar el contenedor en cuestión.

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.

Academia de IA

Cómo lograr la preparación para la IA con la nube híbrida

Dirigida por los principales líderes de opinión de IBM, el plan de estudios está diseñado para ayudar a los líderes empresariales a obtener 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 ser almacenadas en ese registro de contenedores ("empujar") o descargarse en un sistema diferente ("extracción").

Object Storage

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.

Contenedores de dependencia

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.

Autenticación

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.

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

Docker y Kubernetes

Hay dos proveedores de orquestación de contenedores que son fundamentales para el uso de contenedores e imágenes de contenedores:

Docker

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

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.

Beneficios de la imagen de contenedor

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

Despliegue rápido

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.

Preparación constante

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.

Uso seguro

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.

Casos de uso de imágenes de contenedores

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

Aplicaciones nativas de la nube

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.

microservicios

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.

Máquinas virtuales

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.

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 la industria que entran y salen del mercado. Sin embargo, estos proveedores han construido una reputación duradera en este mercado:

  • Amazon: Amazon Sitio 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 permite un acceso más fácil a las imágenes.
  • Apache: Apache es un software de servidor sitio web de código abierto disponible gratuitamente y ofrecido por la Apache Software Foundation, que estima que el software Apache se ejecuta en aproximadamente el 30% de todos los servidores sitio web.
  • GitHub: la plataforma GitHub (ahora propiedad de Microsoft) ha ganado un amplio apoyo de los desarrolladores, quienes aprecian la forma en que este software patentado permite compartir código, administrar código y colaborar.
  • IBM: IBM® Cloud Container Registry permite a los usuarios iniciar fácilmente su propio registro y comenzar a empujar imágenes privadas al registro, para su uso con IBM Cloud Kubernetes Service. Los usuarios obtienen beneficio de la privacidad de tener su propio registro completamente administrado. El servicio, que puede ser impulsado por pruebas sin costo, tiene una 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 emplea Azure Container Registry (ACR), que contiene imágenes de Docker y contenedores de 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 on premises o remota que sincroniza imágenes de contenedores y artefactos OCI con el ACR basado en la nube, que puede alojar imágenes de Windows y Linux. Un método para interactuar con programas de computadora implica escribir y hacer entrada de líneas de texto, también conocidas como líneas de comando. Los sistemas operativos que emplean este método de interacción incorporan una interfaz de línea de comandos (CLI). La mayoría de los usuarios de computadoras ahora dependen de interfaces gráficas de usuario (GUI), aunque las CLI aún son las preferidas por quienes escriben scripts como parte de los esfuerzos de automatización. Azure brinda a los usuarios la flexibilidad de usar Docker CLI para ejecutar operaciones de imágenes de contenedores clave.
  • Python: Python es un lenguaje de programación interpretado, orientado a objetos y de alto nivel que ofrece Python Software Foundation. Sus estructuras de datos integradas hacen que Python sea perfectamente adecuado para cargas de trabajo que requieren un desarrollo rápido de aplicaciones. La principal ventaja de Python para los programadores de software es la 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 Linuxdesde el inicio de la empresa en 1993. El registro de contenedores que ofrece Red Hat, OpenShift Container Platform (OCP), permite a los usuarios obtener acceso automáticamente a los repositorios de imágenes bajo demanda y también les brinda una ubicación estándar para enviar las imágenes que resultan 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.

Conozca 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 y despliegue rápido.

Explorar contenedores
Servicios de consultoría en la nube 

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.

Servicios 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 todos los entornos con flexibilidad, seguridad y eficiencia mediante el uso de la plataforma integral de contenedores de IBM.

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