Как настроить реестр эластичных контейнеров (ECR) для Docker на AWS
Amazon Elastic Container Registry (ECR) — это управляемый сервис реестра контейнеров AWS. Этот сервис находится в разделе «Вычисления» на консоли AWS. Он используется для хранения, управления и развертывания образов Docker Container. ECR интегрирован с Amazon Elastic Container Service (ECS).
С ECR нет никаких авансовых платежей. Мы платим только за объем данных, которые мы храним в наших репозиториях, и за данные, передаваемые в Интернет. Чтобы узнать больше о выставлении счетов ECR, нажмите здесь.
Прежде чем мы продолжим, давайте разберемся с некоторыми терминами, которые мы увидим позже в этой статье.
Реестр: это место, где мы можем создавать репозитории изображений и хранить в них изображения.
Токен авторизации: клиент Docker должен пройти аутентификацию в реестрах Amazon ECR как пользователь AWS, прежде чем он сможет отправлять и получать изображения. Учетные данные для аутентификации можно получить из команды AWS CLI get-login, которая предоставляется для передачи в Docker.
Репозиторий: репозиторий образов содержит образы Docker. Политика репозитория
Изображение: мы можем передавать и извлекать образы Docker в наши репозитории. Мы можем использовать эти образы локально в нашей системе.
В этой статье мы увидим, как создать реестр ECR, репозиторий, а также отправлять и извлекать образ Docker в него и из него. Я постараюсь сделать этот документ как можно более простым, чтобы новичкам не потребовалось особых усилий для понимания.
Предпосылки
- Аккаунт AWS (создайте, если у вас его нет)
- Сервер Ubuntu 18.04 или экземпляр EC2 Ubuntu 18.04 (нажмите здесь, чтобы узнать, как создать экземпляр EC2, если у вас его нет или вы хотите научиться )
- Докер предварительно установлен в вашей системе.
Что мы будем делать?
- Войдите в AWS.
- Создайте репозиторий ECR.
- Установите интерфейс командной строки AWS на сервере Linux.
- Аутентифицируйте клиент Docker из терминала, пометьте и загрузите локальный образ в репозиторий ECR.
- Отмените тег и удалите образ из локальной системы и извлеките репозиторий ECR.
Войти в АВС
- Нажмите здесь, чтобы перейти на страницу входа в AWS.
Когда мы перейдем по приведенной выше ссылке, мы увидим следующую веб-страницу, где нам необходимо войти в систему, используя наши данные для входа.
Создать репозиторий ECR
Чтобы создать репозиторий ECR, щелкните стрелку рядом с «Сервисы», и вы увидите список сервисов AWS.
Нажмите на \ECR\ из списка. Вы можете выбрать нужный регион. Здесь я продолжаю с Парижем.
Вы увидите следующий экран.
Нажмите «Начать», чтобы создать свой первый репозиторий.
Теперь на следующем экране дайте имя репозиторию, которое необходимо создать.
На том же экране вы можете увидеть две доступные опции.
- Неизменяемость тегов.
Эта функция предотвращает перезапись тегов изображений при последующих отправках изображений с использованием того же тега. - Сканирование при отправке
С помощью этой функции мы можем включить сканирование при отправке, чтобы каждое изображение автоматически сканировалось после отправки в репозиторий.
Пока мы не будем включать эти функции.
Просто нажмите «Создать репозиторий», чтобы продолжить.
Теперь вы можете видеть, что репозиторий готов к использованию.
Установите интерфейс командной строки AWS на сервер Linux.
Вам также понадобится команда \aws в вашей системе.
Чтобы установить «aws» в системе Ubuntu, вы можете просто ввести следующие команды
apt-get update
apt-get install awscli
Аутентифицируйте клиент Docker с терминала, пометьте и загрузите существующий образ в репозиторий ECR.
После того, как у нас есть команда \aws в нашей системе, нам нужно аутентифицировать клиент Docker в нашем реестре, а для этого нам нужна система с установленным на ней Docker.
Вы можете обратиться к официальной странице Docker, чтобы установить Docker в вашей системе.
Мы можем проверить версию Docker с помощью команды \docker --version.
Прежде чем мы аутентифицируем клиент Docker в нашем реестре, нам нужно экспортировать наши aws_access_key_id и aws_secret_access_key.
Дополнительные сведения об этом см. в официальной документации AWS.
Используйте следующие команды для экспорта необходимых ключей.
aws configure set aws_access_key_id YOUR_ACCESS_KEY
aws configure set aws_secret_access_key YOUR_SECRET_KEY
aws configure set default.region YOUR_DEFAULT_REGION
aws configure set default.output json
После экспорта этих значений мы готовы аутентифицировать клиент Docker в нашем реестре.
Сначала нажмите на репозиторий, а затем нажмите «Просмотреть push-команды»:
Мы увидим все необходимые команды, как только нажмем \Просмотреть push-команды:
Скопируйте первую команду и выполните ее в своей системе, чтобы аутентифицировать клиент Docker в нашем реестре.
Теперь давайте вытащим образ из Docker Hub, который мы отправим в репозиторий ECR или создадим из вашего Dockerfile. Здесь я вытащу образ apache/httpd, а затем отправлю его
docker pull httpd
Выведите список изображений, чтобы просмотреть доступные изображения в локальной системе.
docker images
Скопируйте вторую команду, если хотите создать собственный образ, или перейдите к третьей команде и выполните ее
Тег Docker
Вот,
тег докера httpd:последний 064827688814.dkr.ecr.eu-west-3.amazonaws.com/rahul-ecr-repo:последний
НЕ ИСПОЛЬЗУЙТЕ этот адрес, так как я уже удалил репозиторий.
Теперь мы готовы передать изображение в ECR.
Скопируйте четвертую команду и выполните ее.
Это успешно отправит образ в репозиторий ECR.
Снимите тег и удалите изображение из локальной системы и извлеките из репозитория ECR.
Мы можем удалить локальное изображение, если оно вам больше не нужно.
docker rmi
Вот,
docker rmo httpd
Точно так же вы можете удалить образ с тегом из локальной системы.
Затем вы можете попытаться вытащить изображение из репозитория ECR.
Перейдите в репозиторий и скопируйте URI изображения:
docker pull “IMAGE_URI”
Заключение
В этой статье мы узнали, как создать репозиторий ECR, войти в клиент Docker, пометить локальный образ, отправить его в репозиторий ECR и получить то же самое.