Amazon ECR Docker Credential Helper — это помощник по учетным данным для демона Docker, который упрощает использование Amazon Elastic Container Registry.
Предварительные условия
Установка
Амазон Linux 2023 (AL2023)
Амазон Linux 2 (AL2)
Mac ОС
Debian Buster (и будущие версии)
Ubuntu 19.04 Disco Dingo и новее
Арч Линукс
Альпийский Линукс
Окна
Из источника
Конфигурация
Докер
Учетные данные AWS
Помощник по учетным данным Amazon ECR Docker
Использование
Поиск неисправностей
Раскрытие информации о безопасности
Лицензия
В вашей системе должен быть установлен как минимум Docker 1.11.
У вас также должны быть доступны учетные данные AWS. Подробную информацию о том, как использовать различные учетные данные AWS, см. в разделе «Учетные данные AWS».
Вы можете установить Amazon ECR Credential Helper из репозиториев Amazon Linux 2023.
$ sudo dnf install -y amazon-ecr-credential-helper
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Вы можете установить Amazon ECR Credential Helper из docker
или дополнительных средств ecs
.
$ sudo amazon-linux-extras включить докер $ sudo yum install amazon-ecr-credential-helper
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Формула Homebrew, поддерживаемая сообществом, доступна в основном кране.
$ Brew install docker-credential-helper-ecr
В macOS другой метод установки, поддерживаемый сообществом, — использование MacPorts.
$ sudo port install docker-credential-helper-ecr
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Вы можете установить Amazon ECR Credential Helper из архивов Debian Buster. Этот пакет также будет включен в будущие выпуски Debian.
$ sudo apt обновление $ sudo apt install amazon-ecr-credential-helper
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Вы можете установить Amazon ECR Credential Helper из архивов Ubuntu 19.04 Disco Dingo (и более поздних версий).
$ sudo apt обновление $ sudo apt install amazon-ecr-credential-helper
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Пакет, поддерживаемый сообществом, доступен в репозитории пользователей Arch.
$ git clone https://aur.archlinux.org/amazon-ecr-credential-helper.git $ cd amazon-ecr-credential-helper $ makepkg -si
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Пакет, поддерживаемый сообществом, доступен в репозитории aports Alpine Linux.
$ apk добавить docker-credential-ecr-login
Примечание
На значке отображается только Edge. Проверьте репозиторий на наличие стабильных выпусков или добавьте --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Исполняемые файлы Windows доступны через выпуски GitHub.
Примечание
Поддержка Windows ARM считается экспериментальной.
См. № 795.
Чтобы создать и установить Amazon ECR Docker Credential Helper, мы предлагаем установить Go 1.19 или новее, git
и make
в вашей системе.
Если вы только что установили Go, убедитесь, что вы также добавили его в переменные PATH или среды (Windows). Например:
$ export GOPATH=$HOME/go $ export PATH=$PATH:$GOPATH/bin
Или в Windows:
setx GOPATH %USERPROFILE%go <your existing PATH definitions>;%USERPROFILE%gobin
Если вы не определили PATH, команда ниже завершится автоматически, и запуск docker-credential-ecr-login
выведет: command not found
Вы можете установить это с помощью инструмента командной строки go
.
Для установки запустите:
go install github.com/awslabs/amazon-ecr-credential-helper/ecr-login/cli/docker-credential-ecr-login@latest
Предупреждение
Отказ от ответственности: файл Dockerfile в этом репозитории используется для тестирования кросс-компиляции вспомогательных двоичных файлов учетных данных Amazon ECR в GitHub Actions CI, а также в качестве утилиты разработчика для локальной сборки из исходного кода. Это эталонная реализация, а не усиленная система безопасности для создания и запуска производственных контейнеров.
Если у вас уже есть среда Docker, просто клонируйте этот репозиторий куда угодно и запустите make build-in-docker
. Эта команда создает двоичный файл с помощью Go внутри контейнера Docker и выводит его в локальный каталог.
С помощью переменной среды TARGET_GOOS
вы также можете кросс-компилировать двоичный файл.
После установки помощника по учетным данным см. раздел «Конфигурация» для получения инструкций о том, как настроить Docker для работы с помощником.
Нет необходимости использовать docker login
или docker logout
.
Поместите двоичный файл docker-credential-ecr-login
в свой PATH
и установите содержимое вашего файла ~/.docker/config.json
следующим образом:
{ "credsStore": "ecr-login"}
Это настроит демон Docker на использование помощника по учетным данным для всех реестров Amazon ECR.
Amazon ECR Docker Credential Helper можно использовать вместе с существующими токенами аутентификации для входа в Docker:
{ "credsStore": "ecr-login", "auths": { "https://index.docker.io/v1/": { "auth": [docker.io-auth-token] }, "registry.gitlab.com": { "auth": [gitlab-auth-token] }, } }
В Docker 1.13.0 или более поздней версии вы можете настроить Docker для использования разных помощников по учетным данным для разных реестров ECR. Чтобы использовать этот помощник по учетным данным для определенного реестра ECR, создайте раздел credHelpers
с URI вашего реестра ECR:
{ "credHelpers": { "public.ecr.aws": "ecr-login", "<aws_account_id>.dkr.ecr.<region>.amazonaws.com": "ecr-login" } }
Это полезно, если вы используете docker
для работы с реестрами, которые используют разные учетные данные аутентификации.
Помощник по учетным данным Amazon ECR Docker позволяет использовать учетные данные AWS, хранящиеся в разных местах. Стандартные включают в себя:
Общий файл учетных данных ( ~/.aws/credentials
).
Переменные среды AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
Роль IAM для задачи Amazon ECS
Роль IAM для Amazon EC2
Чтобы использовать учетные данные, связанные с профилем с другим именем в общем файле учетных данных ( ~/.aws/credentials
), вы можете установить переменную среды AWS_PROFILE
.
Помощник по учетным данным Amazon ECR Docker считывает и поддерживает некоторые параметры конфигурации, указанные в общем файле конфигурации AWS ( ~/.aws/config
). Чтобы отключить эти параметры, необходимо установить для переменной среды AWS_SDK_LOAD_CONFIG
значение false
. Поддерживаемые параметры включают в себя:
Предполагаемые роли, указанные с помощью role_arn
и source_profile
Внешние процессы учетных данных, указанные с помощью credential_process
Веб-идентификаторы, такие как роли IAM для учетных записей служб в Kubernetes ( Примечание. Пользователи Kubernetes, использующие контейнеры с пользователем без полномочий root, могут столкнуться с проблемами разрешений, описанными в этой ошибке, и, возможно, потребуется использовать обходной путь для настройки securityContext
Kubernetes. )
Помощник по учетным данным Amazon ECR Docker использует те же учетные данные, что и интерфейс командной строки AWS и пакеты AWS SDK. Дополнительную информацию о настройке учетных данных AWS см. в разделе «Файлы конфигурации и учетных данных» Руководства пользователя интерфейса командной строки AWS .
К учетным данным должна быть применена политика, разрешающая доступ к Amazon ECR.
Переменная среды | Образец значения | Описание |
---|---|---|
AWS_ECR_DISABLE_CACHE | истинный | Отключает кэш аутентификации локального файла, если установлено непустое значение. |
AWS_ECR_CACHE_DIR | ~/.ecr | Указывает местоположение локального каталога кэша аутентификации файлов. |
AWS_ECR_IGNORE_CREDS_STORAGE | истинный | Игнорируйте вызовы для входа в систему или выхода из системы и притворяйтесь, что им это удалось. |
docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker push 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
docker pull public.ecr.aws/amazonlinux/amazonlinux:latest
Если вы настроили дополнительные профили для использования с AWS CLI, вы можете использовать эти профили, указав переменную среды AWS_PROFILE
при вызове docker
. Например:
AWS_PROFILE=myprofile docker pull 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository:my-tag
Нет необходимости использовать docker login
или docker logout
.
Если вы ранее прошли аутентификацию в репозитории ECR, используя команду docker login
вручную, возможно, Docker сохранил токен аутентификации, срок действия которого уже истек. Docker продолжит попытки использовать этот кэшированный токен аутентификации вместо использования помощника по учетным данным. Вы должны явно удалить ранее кэшированный токен с истекшим сроком действия, используя docker logout 123456789012.dkr.ecr.us-west-2.amazonaws.com/my-repository
. После этого Docker начнет использовать помощник по учетным данным ECR для получения новых учетных данных, и вам больше не нужно будет использовать docker login
или docker logout
.
Журналы Amazon ECR Docker Credential Helper хранятся в ~/.ecr/log
.
Дополнительную информацию об Amazon ECR см. в Руководстве пользователя Amazon Elastic Container Registry.
Функции, помеченные как экспериментальные, могут быть доступны пользователям для тестирования и предоставления отзывов.
Если вы тестируете какие-либо экспериментальные функции, вы можете оставить отзыв через систему отслеживания функций относительно:
Ваш опыт работы с этой функцией
Проблемы или проблемы
Предлагаемые улучшения
Экспериментальные возможности незавершены в разработке и реализации. В любой момент могут быть внесены обратно несовместимые изменения или полностью прекращена поддержка. Поэтому экспериментальные функции не рекомендуется использовать в производственных средах.
Если вы считаете, что обнаружили потенциальную проблему безопасности, не публикуйте ее в разделе «Проблемы». Вместо этого следуйте инструкциям здесь или отправьте электронное письмо в службу безопасности AWS.
Amazon ECR Docker Credential Helper лицензируется по лицензии Apache 2.0.