Я пытаюсь вставить образ докера в реестр 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 были правильные разрешения. Я также позаботился о том, чтобы репозиторий позволил этому пользователю перейти на него. Просто чтобы убедиться, что это не проблема, я настроил реестр, чтобы предоставить всем пользователям полный доступ. Ничто не меняет ошибку "без базовых учетных данных". Я не знаю, как начать отлаживать это, поскольку весь трафик зашифрован.
ОБНОВИТЬ
Таким образом, у меня был небольшой момент Гомера Симпсона, когда я понял основную причину моей проблемы. У меня есть доступ к нескольким аккаунтам AWS. Несмотря на то, что я использовал aws configure, чтобы установить свои учетные данные для учетной записи, в которой я настраивал свой репозиторий, aws cli фактически использовал переменные среды AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY. Поэтому, когда я делал aws ecr get-login, он возвращал логин не той учетной записи. Я не заметил, что номера счетов были другими, пока не вернулся, чтобы попробовать некоторые из предложенных ответов. Когда я удаляю переменные окружения, все работает правильно. Я предполагаю, что девиз этой истории - если вы нажмете эту ошибку, убедитесь, что репозиторий, в который вы входите, соответствует тегу, который вы применили к изображению.