Docker ECR 사용 시 no basic auth credentials 오류 원인과 해결법
aws configure와 docker login이 정상인데도 docker pull 또는 docker push 시no basic auth credentials 오류가 발생할 수 있다. 이 글에서는 AWS 공식 문서에서 다루는 일반적인 원인 외에,sudо 사용으로 인한 인증 문제를 중심으로 정리한다.
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를 쓰는 것은 번거롭다.
방법 2: sudo 없이 Docker를 실행하도록 설정
이후 docker login, docker pull, docker push 명령을 모두 sudo 없이 실행할 수 있다.
AWS CLI의 자격 증명(~/.aws/credentials)도 정상적으로 인식된다.
요약:
no basic auth credentials오류는 단순 인증 만료 외에도sudo사용으로 인해 발생할 수 있다.
- 해결책은
sudo없이 Docker를 사용할 수 있도록 현재 사용자를docker그룹에 추가하는 것이다.
- 이 설정 이후에는 AWS CLI와 Docker 인증 체계가 동일 사용자 환경에서 동작하여 문제를 방지할 수 있다.