#amazon-web-services #docker #amazon-ecr
#amazon-web-services #docker #amazon-ecr
Вопрос:
Я пытаюсь войти в AWS ECR с помощью команды Docker login. Я могу получить пароль с помощью командной строки AWS CLI с помощью команды aws ecr get-login-password
, но при вводе этого в docker login
команду я получаю следующую ошибку:
Error saving credentials: error storing credentials - err: exit status 1, out: `not implemented`
Команда, которую я запускаю, рекомендована в документации AWS ECR:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin account_id_redacted.dkr.ecr.us-east-1.amazonaws.com/blog-project
Я использую последнюю версию командной строки AWS по состоянию на этот вопрос, 2.0.57.
Я использую Docker версии 2.4.0 на macOS 10.14.6
Кто-нибудь еще сталкивался с этой проблемой, и если да, то нашли ли они решение?
Я определенно добивался этого в прошлом, но мне интересно, есть ли проблема между последними версиями Docker и AWS CLI…
Комментарии:
1. Я столкнулся с той же проблемой. Обнаружил, что мой docker-engine не работает локально. Это было исправлено, как только я запустил движок docker.
Ответ №1:
Я не уверен на 100%, в чем проблема, но это было как-то связано с помощником по учетным данным Docker.
Я установил помощник по учетным данным Docker для macOS, изменил credsStore
параметр на ~/.docker/config.json
osxkeychain
. Это устранило проблемы.
Комментарии:
1. Это сработало и для меня, и я просматривал Интернет в поисках решения. Я использую saml2aws, aws и docker вместе. Как только я изменил свой
~/.docker/config.json
, я запустил$ aws ecr get-login-password --profile <profile_name> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
, а затем$ docker push <image>
2. На самом деле это не решение для OP. Это решение только для пользователей iOS, но не для других. Если вы обратитесь к документации, она покажет вам, что docker login не предназначался для вызова с конфигурацией OPs
Ответ №2:
У меня была похожая проблема, похоже, что я ~/.docker/config.json
был полностью испорчен после работы с несколькими репозиториями / концентраторами.
Поэтому я просто удалил все содержимое этого файла, оставив его пустым, и повторно aws ecr get-login-password | docker login ...
запустил, который автоматически заполнил конфигурацию соответствующими значениями.
Комментарии:
1. Примечание: Это решение работало в системе, отличной от ios (linux debian bullseye)
2. Я также использую Mac OS
Ответ №3:
У меня была эта проблема в macOS из
.docker/config.json
удалить
"credsStore" : "ecr-login"
Это решило проблему для меня
Ответ №4:
если у кого-то такая же проблема в Windows, перейдите к C:Users папку и в папке .docker удалите файл config.json.
это может решить вашу проблему
Ответ №5:
Я считаю, что это предполагаемый результат (вроде). Смысл использования amazon-ecr-credential-helper заключается в том, что его не нужно использовать docker login
. Вместо этого вы должны настроить интерфейс командной строки AWS с учетными данными вашего профиля (мой: myprofile). Затем вам просто нужно будет немного изменить свои скрипты.
Например, в ECR указанные AWS шаги для загрузки образа docker следующие:
Извлеките токен аутентификации и аутентифицируйте свой клиент Docker в своем реестре. Используйте интерфейс командной строки AWS:
aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin XXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com
Примечание: Если вы получаете сообщение об ошибке при использовании командной строки AWS, убедитесь, что у вас установлена последняя версия командной строки AWS и Docker.Создайте свой образ Docker, используя следующую команду. Для получения информации о создании файла Docker с нуля см. Инструкции здесь . Вы можете пропустить этот шаг, если ваш образ уже создан:
docker build -t toy_project .
После завершения сборки пометьте свое изображение, чтобы вы могли отправить его в этот репозиторий:
docker tag toy_project:latest XXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com/toy_project:latest
Выполните следующую команду, чтобы отправить это изображение во вновь созданный репозиторий AWS:
docker push XXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com/toy_project:latest
Однако вы хотели бы пропустить шаг 1. Причина в том, что если вы настроили aws cli (т.Е. aws configure --profile myprofile
), Ваши учетные данные будут сохранены. Итак, вы можете перейти к шагу 2.
На 4-м шаге вам просто нужно добавить AWS_PROFILE
, как показано ниже
AWS_PROFILE=myprofile docker push XXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com/toy_project:latest`
С amazon-ecr-credential-helper вам больше не нужно использовать docker login
или беспокоиться о сохранении учетных данных, в этом суть amazon-ecr-credential-helper. Однако это может быть не лучшим решением для вас, если вам нужно активно использовать docker login
в своих сценариях.
Примечание: мой ~/.docker/config.json
выглядит так
{
"credsStore": "ecr-login"
}
Ответ №6:
Я получал ту же ошибку при выполнении этой команды в macOS. Возможно, ошибка произошла из-за того, что у этого конкретного местоположения не было соответствующих разрешений для пользователей read/write/execute
.
Также, пока я делал
% docker ps
Он выдавал ошибку как: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
Что я сделал:
% sudo chmod 777 /var/run/docker.sock
Это дало все необходимые разрешения для этого местоположения.
Надеюсь, это поможет!