Publicado en: Sep 8, 2022

Seekable OCI es una tecnología de código abierto de AWS que permite un inicio más rápido de los contenedores mediante la carga diferida de la imagen del contenedor. SOCI crea un índice (índice de SOCI) de los archivos dentro de la imagen de un contenedor existente. Este índice es un elemento clave para que los contenedores se inicien más rápido, lo que ofrece la posibilidad de extraer un archivo individual de la imagen de un contenedor en lugar de descargar el archivo completo.

La mayoría de los métodos para lanzar contenedores descargan la imagen completa del contenedor desde un registro de contenedor remoto antes de iniciar el contenedor. Esperar todos los datos es una pérdida de tiempo cuando solo se necesita una pequeña cantidad de datos para el inicio. Las investigaciones previas muestran que las descargas de las imágenes de los contenedores equivalen al 76 % del tiempo de inicio del contenedor, pero, en promedio, solo se necesita el 6,4 % de los datos para que el contenedor sea útil.

Existen varias soluciones para este problema, incluida la reducción del tamaño de la imagen de un contenedor y la precarga de las imágenes de los contenedores en un almacenamiento local. En la carga diferida, se descargan los datos desde el registro en paralelo con el inicio de las aplicaciones. Las imágenes de los contenedores se almacenan como una lista ordenada de capas, y las capas se suelen almacenar como archivos TAR comprimidos mediante GNU ZIP. Generalmente, no se pueden cargar archivos individuales de los archivos TAR comprimidos mediante GNU ZIP. Algunos proyectos permiten la carga diferida a través de la conversión del formato. Uno de estos proyectos es Stargz-Snapshotter, que toma una imagen de Open Container Initiative (OCI, iniciativa de contenedores abiertos) y crea una nueva imagen de OCI con una tabla de contenido incrustada. SOCI toma prestados los principios de diseño de Stargz-Snapshotter, pero adopta un enfoque diferente. Un índice de SOCI se genera en forma independiente de la imagen del contenedor y se almacena en el registro como un artefacto de OCI que se vuelve a vincular con la imagen del contenedor mediante los tipos de referencia de OCI. Esto significa que no es necesario convertir las imágenes de los contenedores, que los archivos de resumen de las imágenes no cambian y que las firmas de las imágenes continúan siendo válidas.

Para crear los índices de SOCI de las imágenes de OCI de los contenedores existentes se utiliza una herramienta de código abierto, y un generador de instantáneas, llamado soci-snapshotter, brinda alcontainerd la posibilidad de realizar una carga diferida de las imágenes indizadas por SOCI. SOCI y soci-snapshotter son de código abierto con Apache 2.0, y puede obtener más información sobre el proyecto en GitHub. Esperamos trabajar y comprometernos con la comunidad para mejorar SOCI y agilizar los lanzamientos de los contenedores.