Publicado: Sep 8, 2022
O Seekable OCI (SOCI) é uma tecnologia de código aberto da AWS que permite acelerar a carga de contêineres carregando lentamente imagens de contêiner. O SOCI funciona criando um índice (índice do SOCI) dos arquivos em uma imagem de contêiner existente. Esse índice é um fator decisivo para acelerar o lançamento de contêineres, permitindo extrair um arquivo individual de uma imagem de contêiner antes de fazer o download de todo o arquivamento.
A maioria dos métodos de lançamento de contêiner faz o download de toda a imagem do contêiner de um registro de contêineres remoto antes de lançar o contêiner. Aguardar o download de todos os dados pode ser um desperdício de tempo em casos em que apenas uma pequena quantidade de dados é necessária para a inicialização. Uma pesquisa demonstrou que os downloads de imagens de contêiner respondem por 76% do tempo de inicialização, mas apenas 6,4% dos dados são necessários para que o contêiner comece a operar.
Há várias soluções para esse problema, incluindo a redução do tamanho das imagens de contêiner e a cópia prévia dessas imagens para armazenamento local. O carregamento lento é uma abordagem em que o download dos dados do registro é feito em paralelo com a inicialização das aplicações. As imagens de contêiner são armazenadas como uma lista de camadas ordenada. As camadas usadas com maior frequência são armazenadas como arquivos tar compactados com gzip. Normalmente, não é possível acessar arquivos individuais em arquivos tar compactados. Alguns projetos ativam o carregamento lento usando conversão de formato. Um desses projetos é o stargz-snapshotter, que cria uma imagem OCI com índice incorporado a partir de uma imagem OCI existente. No SOCI, adotamos alguns princípios de projeto do stargz-snapshotter, mas com uma abordagem diferente. Um índice do SOCI é gerado separadamente da imagem do contêiner e armazenado no registro como um artefato OCI vinculado à imagem do contêiner por tipos de referência do OCI. Isso significa que as imagens do contêiner não precisam ser convertidas, os resumos das imagens não são alterados e as assinaturas das imagens permanecem válidas.
Uma ferramenta de criação de código aberto é usada para criar índices do SOCI para imagens OCI existentes. Um Remote Snapshotter, denominado soci-snapshotter, permite que containerd carregue lentamente imagens indexadas pelo SOCI. O SOCI e o soci-snapshotter têm código aberto nos termos do Apache 2.0. Saiba mais sobre o projeto no GitHub. Esperamos trabalhar e interagir com a comunidade no aprimoramento do SOCI e na aceleração do lançamento de contêineres.