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 인증 체계가 동일 사용자 환경에서 동작하여 문제를 방지할 수 있다.