Как оценить объем хранилища и трафик, используемый для образов докеров в AWS ECR?

Я пытаюсь оценить ежемесячную стоимость использования AWS ECR. Он будет состоять из: стоимости исходящего трафика (загрузка изображений) и стоимости хранения (хранение изображений в ECR).

Предположим, что:

  • Мы создаем некоторый веб-сервис с использованием Mono (размер базового докера составляет 500 Мб);
  • Наш CI&CD сервер создает и передает изображения в ECR 300 раз в месяц. Старые изображения не удалены для простоты;
  • Наш скомпилированный код добавляет дополнительный слой 40Mb к базовому изображению;
  • Мы загружаем изображения 60 раз в месяц с AWS;

Первый вопрос: как оценить ежемесячный объем хранилища? Какое уравнение является правильным?

Monthly_Vol_1 = 500 + 40 * 300; - базовое изображение сохраняется только один раз

Monthly_Vol_2 = (500 + 40) * 300; - каждое изображение включает в себя базовое изображение

Второй вопрос: как оценить ежемесячный трафик от AWS? Предположим, что хост, загружающий изображения, не удаляет существующие данные.

Monthly_Traf_1 = (500 + 40) * 60; - каждый раз, когда он загружает базовое изображение и дополнительный слой

Monthly_Traf_2 = 500+40*60; - базовое изображение загружается только для 1-го изображения. Загружаются только обновления приложений

Monthly_Traf_3 = 40 * 60; - базовый образ загружается не из AWS ECR, а из док-центра

ОБНОВИТЬ:

Я загрузил 2 изображения в AWS ECR в сентябре и проверил платежную информацию через 2 месяца. Что я обнаружил:

Мне стоило 0,04 доллара в месяц, чтобы хранить 2 изображения (без переводов). Согласно AWS ECR цена ($0,10 за 1 ГБ хранилища) выглядит так, как будто Amazon хранит 400 МБ данных. Те же 400 Мб, которые я вижу на приборной панели AWS ECS.

Я пытался понять и рассчитать, какие данные хранятся (используя команды docker image и docker history), но не получилось.

У меня есть 2 изображения докера, загруженных в AWS ECR:

  1. SVC (482 МБ) на основе моно (409 МБ)
  2. WEB (679Mb) на основе узла (634Mb)

Если AWS хранит полные изображения, то он должен хранить 482 + 679 = 1161Mb

Если в AWS хранятся только что добавленные слои, он должен хранить 45 + 73 = 118 МБ.

Как AWS рассчитывает 400Mb? O_o

UPDATE2:

Похоже, AWS хранит полные изображения, но сжатые (400 МБ вместо 1161 МБ). Согласно http://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImages.html

Начиная с версии 1.9 Docker, клиент Docker сжимает слои изображений перед тем, как помещать их в реестр V2 Docker. Выходные данные команды docker image s отображают размер несжатого изображения, поэтому он может возвращать больший размер изображения, чем размеры изображения, возвращаемые DescribeImages.

0 ответов

Другие вопросы по тегам