Publié le: Sep 8, 2022

Seekable OCI (SOCI) est une technologie d'AWS en open source. Elle permet aux conteneurs d'être lancés plus rapidement en chargeant l'image du conteneur de manière différée. SOCI fonctionne en créant un index (index SOCI) des fichiers au sein d'une image de conteneur existante. Cet index est un catalyseur essentiel pour un lancement plus rapide des conteneurs. Il offre la possibilité d'extraire un fichier individuel de l'image du conteneur avant le téléchargement de la totalité de l'archivage.

La plupart des méthodes de lancement des conteneurs passent par le téléchargement de la totalité de l'image du conteneur à partir d'un registre de conteneurs à distance avant même le démarrage. Dans les cas où seule une petite quantité de données est nécessaire pour le démarrage, il est inefficace d'attendre la totalité des données. Des recherches antérieures ont démontré que les téléchargements d'images de conteneurs prennent 76 % du temps consacré au démarrage du conteneur, alors qu'en moyenne seuls 6,4 % des données sont nécessaires pour que le conteneur commence à travailler de manière efficace.

Il existe plusieurs solutions à ce problème. Par exemple, il est possible de réduire la taille de l'image du conteneur et de récupérer au préalable les images des conteneurs dans un stockage local. Le chargement différé est une approche où les données sont téléchargées depuis le registre parallèlement au démarrage de l'application. Les images du conteneur sont stockées sous la forme d'une liste de couches ordonnées. Ces couches sont le plus souvent stockées en tant que fichiers compressés .tar. En général, il est impossible de récupérer des fichiers individuels en provenance des fichiers compressés .tar. Certains projets permettent le chargement différé par l'intermédiaire de la conversion de format. L'un de ces projets se nomme stargz-snapshotter. Il se sert d'une image OCI existante pour créer une nouvelle image OCI contenant une table des matières intégrée. Avec SOCI, nous avons emprunté certains principes de conception à stargz-snapshotter, mais avec une approche différente. Un index SOCI est généré séparément depuis l'image du conteneur. Il est stocké dans le registre sous la forme d'un artefact OCI et relié à l'image du conteneur par des types de références OCI. Cela signifie que les images du conteneur n'ont pas besoin d'être converties. Les condensés des images ne sont pas modifiés et les signatures des images restent valides.

Un outil de construction en open-source est utilisé pour créer des indices SOCI pour les images de conteneur OCI existantes. Un snapshotter à distance appelé « soci-snapshotter » donne à containerd la capacité de procéder au chargement différé d'images ayant été indexées par SOCI. SOCI et le soci-snapshotter sont en open-source sous Apache 2.0. Vous pourrez en savoir plus concernant le projet sur GitHub. Nous avons hâte de travailler et de dialoguer avec la communauté en ce qui concerne l'amélioration de SOCI et la manière de lancer plus rapidement les conteneurs.