Tôi đang cố gắng đẩy hình ảnh docker lên đăng ký Amazon ECR. Tôi đang sử dụng docker client Docker phiên bản 1.9.1, bản dựng a34a1d5
. Tôi sử dụng aws ecr get-login --region us-east-1
để có được các tín dụng đăng nhập docker. Sau đó, tôi đăng nhập thành công với các khoản tín dụng như sau:
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
Nhưng khi tôi cố gắng đẩy hình ảnh của mình, tôi gặp phải lỗi sau:
$ 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
Tôi chắc chắn rằng người dùng aws có quyền chính xác. Tôi cũng đảm bảo rằng kho lưu trữ cho phép người dùng đẩy vào nó. Chỉ để đảm bảo rằng đó không phải là vấn đề tôi đặt đăng ký để cho phép tất cả người dùng truy cập đầy đủ. Không có gì thay đổi "no basic auth credentials"
lỗi. Tôi không biết làm thế nào để bắt đầu gỡ lỗi này vì tất cả lưu lượng được mã hóa.
CẬP NHẬT
Vì vậy, tôi đã có một chút khoảnh khắc Homer Simpson D'Oh khi tôi nhận ra nguyên nhân sâu xa của vấn đề của mình. Tôi có quyền truy cập vào nhiều tài khoản AWS. Mặc dù tôi đang sử dụng aws configure
để đặt thông tin đăng nhập cho tài khoản nơi tôi đã thiết lập kho lưu trữ của mình nhưng aws cli thực sự đang sử dụng các biến môi trường AWS_ACCESS_KEY_ID
và AWS_SECRET_ACCESS_KEY
. Vì vậy, khi tôi làm aws ecr get-login
điều đó là trả lại một đăng nhập cho tài khoản sai. Tôi không nhận thấy rằng số tài khoản là khác nhau cho đến khi tôi quay lại để thử một số câu trả lời được đề xuất. Khi tôi loại bỏ các biến môi trường, mọi thứ hoạt động chính xác. Tôi đoán phương châm của câu chuyện là nếu bạn gặp phải lỗi này, hãy đảm bảo rằng kho lưu trữ bạn đang đăng nhập khớp với thẻ bạn đã áp dụng cho hình ảnh.