1. 기본적인 원인
AWS 공식 문서(ECR 오류 가이드)에서는
다음과 같은 상황을 일반적인 원인으로 설명한다.
- ECR 리포지토리 URI가 잘못됨
- 로그인 토큰 만료
- 권한 부족 (HTTP 403)
이 경우 문서의 가이드에 따라 재인증(aws ecr get-login-password)을 수행하면 해결된다.
2. 그 외의 원인 — sudo 사용 시 인증 문제
문제는 docker login은 정상인데 docker pull이나 docker push에서만 no basic auth credentials가 반복될 때 발생한다.
이 경우 Docker 명령을 실행하는 사용자 권한이 달라졌을 가능성이 높다.
상황 예시
docker login은 일반 사용자 계정으로 실행
docker pull은sudo docker pull로 실행
이때 sudo는 root 사용자로 명령을 실행하기 때문에,
로그인 시 저장된 인증 정보(~/.docker/config.json)와 다른 사용자의 환경을 사용하게 된다.
그 결과 인증이 누락되어 no basic auth credentials 오류가 발생한다.
3. 해결 방법
방법 1: 모든 Docker 명령에 sudo를 일관되게 사용
sudo docker login ...
sudo docker pull <ECR_URI>
sudo docker push <ECR_URI>단, 매번 sudo를 쓰는 것은 번거롭다.
방법 2: sudo 없이 Docker를 실행하도록 설정
# 1. docker 그룹 추가 (이미 있다면 생략)
getent group docker || sudo groupadd docker
# 2. 현재 사용자를 docker 그룹에 추가
sudo usermod -aG docker $USER
# 3. 세션 갱신
newgrp docker
# 4. 테스트
docker ps이후 docker login, docker pull, docker push 명령을 모두 sudo 없이 실행할 수 있다.
AWS CLI의 자격 증명(~/.aws/credentials)도 정상적으로 인식된다.
요약:
no basic auth credentials오류는 단순 인증 만료 외에도sudo사용으로 인해 발생할 수 있다.
- 해결책은
sudo없이 Docker를 사용할 수 있도록 현재 사용자를docker그룹에 추가하는 것이다.
- 이 설정 이후에는 AWS CLI와 Docker 인증 체계가 동일 사용자 환경에서 동작하여 문제를 방지할 수 있다.