Como estimar o armazenamento e o tráfego usado para imagens do docker no AWS ECR?

3

Estou tentando estimar o custo mensal do uso do AWS ECR. Ela consistirá em: custo de tráfego de saída (download de imagens) e custo de armazenamento (armazenamento de imagens no ECR).

Vamos supor que:

  • Estamos criando um serviço da Web usando o Mono (o tamanho da imagem do docker de base é de 500 MB);
  • Nosso servidor de CI e CD cria e envia imagens para o ECR 300 vezes por mês. Imagens antigas não removidas por simplicidade;
  • Nosso código compilado adiciona uma camada adicional de 40Mb à imagem de base;
  • Fazemos download de imagens 60 vezes por mês da AWS;

A primeira pergunta é: como estimar o volume de armazenamento mensal ? Qual equação está correta?

Monthly_Vol_1 = 500+40*300; - base image stored only once

Monthly_Vol_2 = (500+40)*300; - every image includes base image

A segunda pergunta é: como estimar o tráfego mensal da AWS? Suponhamos que o host que faz o download de imagens não remova os dados existentes.

Monthly_Traf_1 = (500+40)*60; - every time it downloads base image and additional layer

Monthly_Traf_2 = 500+40*60; - base image is downloaded only for the 1st image. Only application updates are downloaded

Monthly_Traf_3 = 40*60; - base image is downloaded not from AWS ECR, but from docker hub

ATUALIZAÇÃO:

Enviei duas imagens para o AWS ECR em setembro e verifiquei as informações de faturamento após dois meses. O que eu descobri:

Custou-me US $ 0,04 por mês apenas para armazenar 2 imagens (sem transferências). De acordo com o preço de ECR da AWS (US $ 0,10 por armazenamento de 1 GB), a Amazon armazena 400 MB de dados. Os mesmos 400Mb que vejo no painel do AWS ECS.

Eu tentei entender e calcular quais dados são armazenados (usando docker image e histórico do docker comandos), mas falhou.

Eu tenho 2 imagens docker enviadas para o AWS ECR:

  1. SVC (482Mb) baseado em Mono (409Mb)
  2. WEB (679Mb) baseado no Node (634Mb)

Se o AWS armazenar imagens completas, ele armazenará 482 + 679 = 1161Mb

Se o AWS armazenar apenas camadas adicionadas, ele armazenará 45 + 73 = 118Mb

Como a AWS calcula 400 MB? O_o

UPDATE2:

Parece que o AWS armazena imagens completas, mas compactadas (400 MB em vez de 1161 MB). De acordo com link

Beginning with Docker version 1.9, the Docker client compresses image layers before pushing them to a V2 Docker registry. The output of the docker images command shows the uncompressed image size, so it may return a larger image size than the image sizes returned by DescribeImages.

    
por rustam 29.09.2016 / 13:14

0 respostas