Я пытаюсь вставить образ докера в реестр Amazon ECR. Я использую Docker клиент Docker версии 1.9.1, сборка a34a1d5
. Я использую aws ecr get-login --region us-east-1
для получения кредитов входа в докер. Затем я успешно захожу с этими кредитами следующим образом:
docker login -u AWS -p XXXX -e none https://####.dkr.ecr.us-east-1.amazonaws.com
WARNING: login credentials saved in /Users/ar/.docker/config.json
Login Succeeded
Но когда я пытаюсь нажать на свое изображение, я получаю следующую ошибку:
$ docker push ####.dkr.ecr.us-east-1.amazonaws.com/image:latest
The push refers to a repository [####.dkr.ecr.us-east-1.amazonaws.com/image] (len: 1)
bcff5e7e3c7c: Preparing
Post https://####.dkr.ecr.us-east-1.amazonaws.com/v2/image/blobs/uploads/: no basic auth credentials
Я убедился, что у пользователя aws были правильные разрешения. Я также позаботился о том, чтобы репозиторий позволил этому пользователю перейти на него. Просто чтобы убедиться, что это не проблема, я настроил реестр, чтобы предоставить всем пользователям полный доступ. Ничто не меняет "no basic auth credentials"
ошибку. Я не знаю, как начать отлаживать это, так как весь трафик зашифрован.
ОБНОВИТЬ
Так что у меня был момент Гомера Симпсона Д'О, когда я понял основную причину моей проблемы. У меня есть доступ к нескольким аккаунтам AWS. Даже при том, что я использовал, aws configure
чтобы установить свои учетные данные для учетной записи, где я настроил свой репозиторий, aws cli фактически использовал переменные среды AWS_ACCESS_KEY_ID
и AWS_SECRET_ACCESS_KEY
. Поэтому, когда я aws ecr get-login
это делал, возвращался логин для неправильной учетной записи. Я не заметил, что номера счетов были другими, пока не вернулся, чтобы попробовать некоторые из предложенных ответов. Когда я удаляю переменные окружения, все работает правильно. Я предполагаю, что девиз этой истории - если вы нажмете эту ошибку, убедитесь, что репозиторий, в который вы входите, соответствует тегу, который вы применили к изображению.