Ошибка при входе в ECR с логином Docker: «Ошибка сохранения учетных данных… не реализовано «

#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 следующие:

  1. Извлеките токен аутентификации и аутентифицируйте свой клиент 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.

  2. Создайте свой образ Docker, используя следующую команду. Для получения информации о создании файла Docker с нуля см. Инструкции здесь . Вы можете пропустить этот шаг, если ваш образ уже создан:

    docker build -t toy_project .

  3. После завершения сборки пометьте свое изображение, чтобы вы могли отправить его в этот репозиторий:

    docker tag toy_project:latest XXXXXXXXX.dkr.ecr.us-east-2.amazonaws.com/toy_project:latest

  4. Выполните следующую команду, чтобы отправить это изображение во вновь созданный репозиторий 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
  

Это дало все необходимые разрешения для этого местоположения.

Надеюсь, это поможет!