Как использовать Amazon ECR: создание репозитория и загрузка образа
Краткие термины
- Registry — область в AWS, где создаются репозитории образов.
- Repository — хранилище Docker-образов внутри реестра.
- Image — Docker-образ, который можно качать и загружать.
- Authorization token — токен авторизации для Docker-клиента, получаемый через AWS CLI.
Что мы сделаем
- Войдём в AWS Console.
- Создадим репозиторий в ECR.
- Установим и настроим AWS CLI на Linux.
- Аутентифицируем Docker, тегируем и загружаем образ в ECR.
- Удалим локальные теги/образы и проверим загрузку из ECR.
Предварительные требования
- Учётная запись AWS.
- Сервер Ubuntu 18.04 или EC2-инстанс с Ubuntu 18.04.
- Docker установлен на вашей машине.
- AWS-права (IAM) с разрешениями на работу с ECR (например, ecr:GetAuthorizationToken, ecr:BatchCheckLayerAvailability, ecr:PutImage, ecr:InitiateLayerUpload и т. п.).
Войти в AWS
Откройте страницу входа в AWS и авторизуйтесь с вашей учётной записью. После входа в консоль переключитесь в нужный регион — репозитории в ECR зависят от региона.

Создание репозитория ECR
- В списке сервисов выберите ECR (Elastic Container Registry).
- Выберите желаемый регион (например, eu-west-3 — Париж).
- Нажмите “Get Started” для первого репозитория или “Create repository” для последующих.
- Задайте имя репозитория.
- По желанию включите опции:
- Tag Immutability — запрет перезаписи тегов одинаковыми метками.
- Scan on Push — автоматическое сканирование образов при загрузке.
Если вы пока не хотите эти опции — оставьте их выключенными и нажмите “Create Repository”.



Установка AWS CLI на Linux
На Ubuntu можно установить awscli через apt. Выполните от имени root или через sudo:
apt-get updateapt-get install -y awscli
Проверьте версию:
aws --versionПримечание: для AWS CLI v2 можно использовать официальный установщик от AWS. Если у вас уже установлена версия, проверьте совместимость команд (в современных версиях рекомендуется использовать get-login-password).
Настройка учётных данных AWS
Экспортируйте/настройте ключи доступа. На машине выполните:
aws configure set aws_access_key_id YOUR_ACCESS_KEYaws configure set aws_secret_access_key YOUR_SECRET_KEYaws configure set default.region YOUR_DEFAULT_REGIONaws configure set default.output jsonВажно: храните ключи в защищённом месте и используйте IAM-роли для EC2/CI в production-средах.
Аутентификация Docker и загрузка образа в ECR
После настройки aws CLI получите команды для пуша в консоли ECR: нажмите “View Push Commands” в вашем репозитории. Консоль предложит последовательность команд — их удобно копировать и запускать локально.

Шаги (общая последовательность)
- Аутентификация Docker к реестру ECR (современный способ для AWS CLI v2):
aws ecr get-login-password --region YOUR_REGION | docker login --username AWS --password-stdin .dkr.ecr..amazonaws.com (если у вас старая версия aws cli, может использоваться команда aws ecr get-login — но она устарела).
- Получите или соберите образ локально. Например, скачать с Docker Hub:
docker pull httpd- Посмотрите локальные образы:
docker images- Тегирование образа для ECR: замените переменные на ваши значения.
docker tag : .dkr.ecr..amazonaws.com/: Пример из статьи:
docker tag httpd:latest 064827688814.dkr.ecr.eu-west-3.amazonaws.com/rahul-ecr-repo:latestНе используйте чужие адреса — создайте свой репозиторий и используйте его URI.
- Push образа в ECR:
docker push .dkr.ecr..amazonaws.com/: Успешный push подтвердится списком загруженных слоёв в терминале и появлением записи в консоли ECR.

Примечание о формате URI
Image URI имеет формат:
.dkr.ecr..amazonaws.com/: Если вы используете приватный реестр другого аккаунта — убедитесь в наличии cross-account разрешений.
Удаление локальных образов и загрузка из ECR
Если локальный образ вам больше не нужен, удалите его:
docker rmi [:Tag] Пример (исправленный синтаксис):
docker rmi httpd:latestЧтобы загрузить образ из ECR, скопируйте Image URI из консоли репозитория и выполните:
docker pull 
Рекомендации по безопасности и управлению доступом
- Используйте IAM-роли для EC2/CI вместо статических ключей там, где возможно.
- Ограничьте права IAM только необходимыми действиями (принцип наименьших привилегий).
- Включите Scan on Push для автоматического поиска уязвимостей (полезно в production).
- Рассмотрите Tag Immutability для критичных релизов, чтобы предотвратить перезапись тегов.
Типичные ошибки и их устранение
- “Access Denied” при push — проверьте IAM-политику и наличие
ecr:GetAuthorizationToken. - Неверный регион — URI репозитория включает регион; откройте репозиторий в соответствующем регионе.
- Проблемы с логином Docker — убедитесь, что используется
aws ecr get-login-passwordи правильно указан registry hostname. - Не совпадают теги — проверьте результат
docker imagesи используемый тег приdocker push.
Критерии приёмки
- Репозиторий создан в нужном регионе.
- Образ успешно запушен и виден в консоли ECR.
- При повторном pull образ корректно скачивается и запускается локально.
- Права доступа ограничены по минимуму и соблюдены требования безопасности.
Чек-листы по ролям
DevOps:
- Создать репозиторий в нужном регионе.
- Настроить CI/CD для автоматического пуша в ECR.
- Включить сканирование и уведомления об уязвимостях.
Разработчик:
- Собрать локальный образ и проверить функциональность.
- Тегировать образ согласно соглашению (например, semantic versioning).
- Проверить pull на staging среде.
Безопасность:
- Проверить IAM-политику и access keys.
- Настроить мониторинг активности и аудит доступа.
Мини-методология: быстрый рабочий цикл
- Сборка образа локально:
docker build -t myapp:1.2.3 . - Логин в ECR:
aws ecr get-login-password | docker login --username AWS --password-stdin $REGISTRY - Тег:
docker tag myapp:1.2.3 $REGISTRY/myapp:1.2.3 - Push:
docker push $REGISTRY/myapp:1.2.3 - Проверка:
docker pull $REGISTRY/myapp:1.2.3и запуск контейнера.
Диаграмма принятия решения
flowchart TD
A[Есть образ локально?] -->|Да| B{Нужна сборка CI?}
A -->|Нет| C[Собрать образ]
C --> B
B -->|Да| D[Тегировать согласно CI]
B -->|Нет| E[Тегировать вручную]
D --> F[Аутентифицировать Docker к ECR]
E --> F
F --> G[Запушить образ в ECR]
G --> H{Push успешен?}
H -->|Да| I[Отметить релиз]
H -->|Нет| J[Проверить IAM/region/login]Тесты/Критерии приёмки
- Проверка 1: команда
docker pushвозвращает успешный статус и слои загружены. - Проверка 2:
docker pullкачает образ без ошибок. - Проверка 3: Запущенный контейнер из образа выполняет базовую проверку работоспособности (например, отвечает на HTTP-запрос).
1‑строчный глоссарий
- ECR — управляемый реестр Docker-образов внутри AWS.
- IAM — система управления доступом в AWS.
Вывод
В статье показан практический цикл: создание репозитория в ECR, настройка AWS CLI, аутентификация Docker, тегирование и загрузка образа, а также удаление и повторная загрузка. Для production-окружения рекомендуются IAM‑роли, автоматизация через CI/CD и включение сканирования образов.
Важно: используйте свои AWS‑идентификаторы и URI репозитория — не копируйте чужие адреса. Следуйте принципу наименьших привилегий и автоматизируйте процесс для воспроизводимости.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента