Artículo
· 18 dic, 2025 Lectura de 5 min

Reducir la huella de la imagen Docker de IRIS Community Edition

La idea más votada en el InterSystems Ideas Portal —con 74 votos— pide una versión ligera de IRIS. Aunque la plataforma ha crecido hasta convertirse en un potente motor de datos, muchos proyectos solo necesitan sus capacidades de base de datos SQL. Este artículo muestra cómo crear una imagen no oficial y compacta de IRIS Community Edition centrada únicamente en la funcionalidad básica de base de datos, reduciendo el tamaño de la imagen en más de un 80%.

⚠️ Aviso

Este proyecto genera una imagen no oficial y experimental de InterSystems IRIS Community Edition.

  • No está soportada ni avalada por InterSystems.
  • Usadla bajo vuestra propia responsabilidad. Las modificaciones eliminan funciones esenciales de la plataforma y pueden romper la compatibilidad con herramientas, APIs y comportamientos esperados.
  • No se aplican garantías de ningún tipo, incluida su idoneidad para uso en producción.
  • Está pensada solo para fines educativos y experimentales por parte de usuarios avanzados.

¿Por qué un IRIS ligero?

Aunque IRIS incluye hoy funciones muy completas —interoperabilidad, analítica, machine learning, gestión del sistema, etc.— muchos proyectos solo requieren sus capacidades SQL básicas. La imagen oficial Docker de Community Edition ocupa aproximadamente:

  • Uso en disco: 3,5–3,8 GB
  • Tamaño comprimido: ~1,1 GB

IRIS Light reduce eso a:

  • Uso en disco: ~575–583 MB
  • Tamaño comprimido: ~144–148 MB

Esto lo hace adecuado para:

  • Uso SQL en microservicios o contenedores
  • Pipelines de CI con arranque y descarga más rápidos
  • Escalado horizontal donde no se necesitan todas las funcionalidades

Comparación de huella de imagen

Las imágenes oficiales de IRIS Community Edition suelen ocupar entre 3.5 y 3.8 GB en disco, con tamaños comprimidos de alrededor de 1.1 GB

$ docker images containers.intersystems.com/intersystems/iris-community
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE
containers.intersystems.com/intersystems/iris-community:latest-cd        14c6314edcc5        3.8GB         1.17GB
containers.intersystems.com/intersystems/iris-community:latest-em        4c25627895eb       3.52GB         1.01GB
containers.intersystems.com/intersystems/iris-community:latest-preview   424e87dbb7d8       3.81GB         1.17GB

Por el contrario, la imagen simplificada “IRIS Light” creada mediante este enfoque es aproximadamente 8 veces más pequeña en tamaño comprimido

$ docker images caretdev/iris-community-light
IMAGE                                                                    ID             DISK USAGE   CONTENT SIZE
caretdev/iris-community-light:latest-cd                                  ce5c2d7fa173        583MB          148MB
caretdev/iris-community-light:latest-em                                  fd33a51a0e81        575MB          144MB
caretdev/iris-community-light:latest-preview                             f10c714117da        583MB          148MB

Analizando las capas de la imagen con Dive

Para comprender y optimizar la imagen de IRIS Community Edition, usamos dive, una herramienta para inspeccionar capas de imágenes Docker e identificar ineficiencias.

Antes de la optimización: imagen estándar de IRIS Community

La captura de pantalla de abajo muestra el análisis de la imagen oficial iris-community:latest-em. Una de las capas más grandes pesa 882 MB e incluye Java, bibliotecas del sistema y otros componentes de ejecución que no son estrictamente necesarios para cargas de trabajo solo de SQL

Y la más grande, de 1.5 GB, que contiene principalmente IRIS itself

Después de la optimización: imagen IRIS Light

Al eliminar paquetes innecesarios y compactar el almacenamiento interno de IRIS, la imagen final cabe en una sola capa de 320 MB, logrando una reducción de tamaño drástica

Cómo se construye la imagen IRIS Light

El proceso sigue un Dockerfile de múltiples etapas, comenzando desde la base estándar iris-community:latest-em. Los pasos clave incluyen:

1. Desactivar componentes en la configuración

  • Desactivar WebServer, System Management Portal y Ensemble en iris.cpf.

2. Eliminar paquetes no usados dentro de IRIS

Usando ObjectScript dentro de una sesión IRIS:

  • Borrar paquetes: %SYS.ML, DeepSee, Interop, OAuth2, Net, Report, y más.
  • Conservar solo las bibliotecas esenciales del sistema (por ejemplo, %Library, %SQL, %SYSTEM).

3. Sustituir clases

Algunas clases necesarias (por ejemplo, para el arranque) se sustituyen por implementaciones mínimas sin funcionalidad cuando es necesario.

4. Limpiar bases de datos

Compactar y desfragmentar las bases de datos clave para reducir el tamaño.

5. Limpieza del sistema de archivos

Eliminar:

  • Herramientas de desarrollo
  • Pila web y CSP
  • Bibliotecas de interoperabilidad
  • Soporte de Python/Java
  • Datos de localización, registros, archivos temporales, controladores ODBC/JDBC

6. Copiar el contenido limpiado a una base Ubuntu nueva

La imagen final se construye sobre ubuntu:24.04, incluye solo los archivos y herramientas necesarios y usa tini como PID 1.

Resultado

La imagen resultante tiene aproximadamente:

  • Tamaño comprimido: ~144–148 MB
  • Uso de disco sin comprimir: ~570–580 MB
  • Funcionalidad SQL: verificada usando la suite de pruebas sqlalchemy-iris (619 aprobadas, 912 omitidas, 0 fallos)

Esto la hace muy adecuada para:

  • Servicios SQL mínimos
  • Contenedores ligeros de desarrollo/pruebas
  • Escenarios de despliegue embebidos o en el edge
  • Arquitecturas sin estado y escaladas horizontalmente

Limitaciones importantes

  • Sin Management Portal ni servicios web
    Toda la pila CSP/web está eliminada.
  • Sin Interoperabilidad, DeepSee, iKnow o Machine Learning
    Estos subsistemas se eliminan explícitamente
  • Sin soporte interno ni externo
    InterSystems no ofrece garantías para esta imagen. La compatibilidad y el comportamiento de actualización son indefinidos.
  • Las futuras versiones de IRIS pueden cambiar los requisitos de arranque
    Dependencias internas en paquetes o archivos eliminados pueden impedir que futuras versiones funcionen con este enfoque

Conclusión

IRIS Light es una imagen Docker simplificada y creada por la comunidad para InterSystems IRIS, que ofrece reducciones significativas en tamaño y complejidad para casos de uso centrados en bases de datos. Aunque no está oficialmente soportada, proporciona una base para experimentación, creación rápida de prototipos y situaciones donde no se necesitan todas las capacidades de IRIS.

Se anima a los usuarios a revisar el Dockerfile, adaptarlo a sus propias necesidades y comprender las implicaciones de eliminar funciones clave de la plataforma.

Se anima a los usuarios a personalizar aún más el Dockerfile para ajustarlo a sus propias necesidades operativas y de seguridad. Todo el proceso de construcción es transparente y reproducible usando únicamente imágenes base públicas de Docker.


Este proyecto está disponible aquí 

Imágenes Docker de IRIS Community Light disponibles en Docker Hub

Comentarios (0)1
Inicie sesión o regístrese para continuar