Я намагаюся підштовхнути зображення докера до реєстру Amazon ECR. Я використовую docker client Docker версії 1.9.1, build 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
це зробив, повертав логін для неправильного облікового запису. Я не помітив, що номери рахунків були різними, поки я просто не повернувся зараз, щоб спробувати деякі із запропонованих відповідей. Коли я видаляю змінні середовища, все працює правильно. Гадаю, девіз історії полягає в тому, що якщо ви потрапили на цю помилку, переконайтеся, що сховище, в яке ви входите, відповідає тегу, який ви застосували до зображення.