Поиск по сайту:

Как настроить реестр эластичных контейнеров (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 в него и из него. Я постараюсь сделать этот документ как можно более простым, чтобы новичкам не потребовалось особых усилий для понимания.

Предпосылки

  1. Аккаунт AWS (создайте, если у вас его нет)
  2. Сервер Ubuntu 18.04 или экземпляр EC2 Ubuntu 18.04 (нажмите здесь, чтобы узнать, как создать экземпляр EC2, если у вас его нет или вы хотите научиться )
  3. Докер предварительно установлен в вашей системе.

Что мы будем делать?

  1. Войдите в AWS.
  2. Создайте репозиторий ECR.
  3. Установите интерфейс командной строки AWS на сервере Linux.
  4. Аутентифицируйте клиент Docker из терминала, пометьте и загрузите локальный образ в репозиторий ECR.
  5. Отмените тег и удалите образ из локальной системы и извлеките репозиторий ECR.

Войти в АВС

  1. Нажмите здесь, чтобы перейти на страницу входа в AWS.

Когда мы перейдем по приведенной выше ссылке, мы увидим следующую веб-страницу, где нам необходимо войти в систему, используя наши данные для входа.

Создать репозиторий ECR

Чтобы создать репозиторий ECR, щелкните стрелку рядом с «Сервисы», и вы увидите список сервисов AWS.

Нажмите на \ECR\ из списка. Вы можете выбрать нужный регион. Здесь я продолжаю с Парижем.

Вы увидите следующий экран.

Нажмите «Начать», чтобы создать свой первый репозиторий.

Теперь на следующем экране дайте имя репозиторию, которое необходимо создать.

На том же экране вы можете увидеть две доступные опции.

  1. Неизменяемость тегов.
    Эта функция предотвращает перезапись тегов изображений при последующих отправках изображений с использованием того же тега.
  2. Сканирование при отправке
    С помощью этой функции мы можем включить сканирование при отправке, чтобы каждое изображение автоматически сканировалось после отправки в репозиторий.

Пока мы не будем включать эти функции.

Просто нажмите «Создать репозиторий», чтобы продолжить.

Теперь вы можете видеть, что репозиторий готов к использованию.

Установите интерфейс командной строки 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 и получить то же самое.