Usando o S3 como registro de contêineres
- Nos últimos 4 meses, houve colaboração com a Outerbounds para desenvolver um construtor personalizado de imagens de contêiner
- Foi descoberto que é possível usar o S3 como registro de contêineres
- Ao expor um bucket do S3 via HTTP e fazer upload da imagem em um caminho específico, é possível baixar a imagem com o comando
docker pull
Demonstração
- Foi criada uma imagem de contêiner que executa
cowsay e ela foi enviada para um bucket do S3
- Foi usado o R2 para fornecer egress gratuito
- R2 e S3 são compatíveis no nível de API
$ docker run --rm pub-40af5d7df1e0402d9a92b982a6599860.r2.dev/cowsay
Por que usar o S3?
- Tradicionalmente, usa-se DockerHub, GitHub Container Registry, ECR etc.
- O S3 oferece uma grande vantagem em velocidade de upload
- Ao comparar a velocidade de upload entre ECR e S3, o S3 foi até 8 vezes mais rápido
Por que o S3 é mais rápido
- O S3 permite enviar em paralelo os chunks de uma única camada
- O ECR, por seguir a OCI Distribution Spec, precisa fazer upload de forma sequencial
- Como não permite upload paralelo, o ECR não consegue aproveitar totalmente a largura de banda
O S3 não é um registro de contêineres
- Em termos estritos, o S3 não é um registro de contêineres
- O comando
docker pull baixa arquivos por meio de requisições HTTP
- Se o bucket do S3 for configurado adequadamente, ele pode ser usado como registro de contêineres
Observações
- Esse método é altamente experimental
- Ele não oferece os recursos de registros de contêineres tradicionais (ex.: varredura de segurança, controle de acesso etc.)
- Mais pesquisa é necessária
PS. E a baleia?
- É uma piada para consultar o logotipo do Docker
Resumo do GN⁺
- Este texto explica como usar o S3 como registro de contêineres
- É possível aproveitar a alta velocidade de upload do S3
- É preciso cuidado, pois ele não oferece os recursos dos registros de contêineres tradicionais
- É uma abordagem experimental, mas interessante
- Outros projetos com funções semelhantes incluem DockerHub, GitHub Container Registry e ECR
1 comentários
Comentários do Hacker News
Há a opinião de que seria bom se a especificação OCI Distribution suportasse arquivos estáticos
Content-Type: octet-streampoderia funcionar bemHá a opinião de que a especificação OCI Distribution não foi bem projetada
Content-Rangenão corresponde ao formato da RFC7233Há a informação de que a Cloudflare tornou open source um servidor de registro de contêineres usando R2
Há a opinião de que gostariam de saber por que, na especificação OCI, o push de camadas precisa acontecer de forma sequencial
Há opiniões sobre os motivos para usar o Nexus e seus prós e contras
docker pullconsistem apenas em requisições simples de HEAD e GETHá a informação de que o Distribution da CNCF oferece suporte para fazer backup do registry no S3 por meio de URLs assinadas do Cloudfront
Há a opinião de que é uma pena não haver menção aos custos de S3 e R2
Há a informação de que o ECR oferece suporte ao upload de camadas de imagem em várias partes
Há reclamações sobre o Registry do Docker
Há a opinião de que não entendem a razão de existir de um registry de contêiner pessoal