인프런 커뮤니티 질문&답변
이미지 pull중 no basic auth credentials 문제입니다.
작성
·
72
·
수정됨
0
msa 프로젝트 중 각 마이크로 서비스의 이미지를 pull 하는 곳에서 문제가 생깁니다.
err: ERROR: for seat-service Head "https://139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/v2/seat-service/manifests/1.0": no basic auth credentials
이렇게 에러가 나오게 되네요...
IAM 사용자 생성했고 권한 정책에 AmazonEC2ContainerRegistryFullAccess를 추가해줬습니다. 또한 이 사용자를 EC2에 연결까지 했습니다. 추가적으로 helper 설정을 위해 ./docker 폴더를 만들고 config.json에 "credsStore":"ecr-login"도 추가해주어 강의랑 매우 똑같이 만들었습니다.
이 deploy.yml 은 github action 코드입니다. 7번에서 이 오류가 발생하게 됩니다.
======선을 기준으로 아래는 docker-compose.yml파일입니다. 이 문제를 어떻게 해결해야할까요? 또한 각 마이크로 서비스에 연결된 데이터베이스가 모두 maraiDB라면 이걸 docker-compose.yml로 이미지화 시켜야하는것이 맞을까요?
# 6. EC2로 Compose 파일 전송
- name: Copy docker-compose.yml to EC2
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
source: "docker-compose.yml"
target: "/home/ubuntu/movie-project/"
strip_components: 0
overwrite: true
# 7. EC2에서 Compose 실행
- name: SSH into EC2 and deploy
uses: appleboy/ssh-action@v0.1.7
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USERNAME }}
key: ${{ secrets.EC2_PRIVATE_KEY }}
script: |
cd /home/ubuntu/movie-project
sudo docker-compose down
sudo docker-compose pull
sudo docker-compose up -d
================================================
movie-service:
image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/movie-service:1.0
depends_on:
- redis
book-service:
image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/book-service:1.0
depends_on:
- kafka
payment-service:
image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/payment-service:1.0
depends_on:
- kafka
seat-service:
image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/seat-service:1.0
depends_on:
- kafka답변 2
0
안녕하세요 수현님! 질문 잘 해주셨어요 !
보내주신 내용들 토대로 디버깅 도와드려볼게요 ~
아래 과정들을 통해 디버깅 해보시는걸 추천드려요 :)
"이미지를 pull 하는 곳에서 문제가 생깁니다. no basic auth credentials 이렇게 에러가 나오게 되네요…"
-> 현재 스크립트에서 ECR 로그인 부분에 문제가 있는것 같아요 !
아래와 같이 실제 ECR 주소로 변경하시고, sudo 명령어를 제거한 뒤 시도해보시는 걸 추천드려요 !
script: |
cd /home/ubuntu/movie-project
aws ecr get-login-password —region ap-northeast-2 | docker login —username AWS —password-stdin 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com
docker-compose down
docker-compose pull
docker-compose up -d
"Docker 권한 문제"
-> EC2에서 ubuntu 사용자가 docker 그룹에 포함되어 있는지 확인해보시는걸 추천드려요 !
sudo usermod -aG docker ubuntu
newgrp docker
" 각 마이크로 서비스에 연결된 데이터베이스가 모두 maraiDB라면 이걸 docker-compose.yml로 이미지화 시켜야하는것이 맞을까요?"
-> 실제 운영 환경에서는 docker-compose로 한 번에 띄우지 않고 별도의 서버에 DB를 띄우지만
개발 및 테스트를 위해 docker-compose를 활용해 한 번에 모든 DB를 띄우고 싶으시다면
맞게 구성하신겁니다!
위에 말씀드린 방식으로 디버깅 해보시고 여전히 에러가 발생하시면
질문 다시 한 번만 남겨주세요~!!
0
안녕하세요, 인프런 AI 인턴입니다. 이수현님.
Docker에서 이미지를 ECR에서 pull할 때 발생하는 “no basic auth credentials” 오류는 주로 인증 문제로 인해 발생합니다. 아래에 문제를 해결하기 위한 몇 가지 조언을 드리겠습니다.
문제 요약
no basic auth credentials오류는 Docker가 ECR에서 이미지를 가져오기 위해 필요한 인증 정보를 찾을 수 없기 때문에 발생합니다.
해결 방법
ECR 로그인 명령어 실행 확인:
- deploy.yml의 7번 단계에서 ECR에 로그인하는 명령어가 올바르지 않을 가능성이 있습니다. 명령어를 실행할 때, 실제 AWS 계정 ID와 올바른 리전을 사용해 주시기 바랍니다.
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin [AWS 계정 ID].dkr.ecr.ap-northeast-2.amazonaws.com- EC2 환경에서 직접 실행하여 인증이 제대로 되는지 확인해보세요.
- deploy.yml의 7번 단계에서 ECR에 로그인하는 명령어가 올바르지 않을 가능성이 있습니다. 명령어를 실행할 때, 실제 AWS 계정 ID와 올바른 리전을 사용해 주시기 바랍니다.
Docker 설정 확인:
- EC2 인스턴스에 있는
~/.docker/config.json파일을 확인하여 올바른 크리덴셜 스토어 설정이 되었는지 확인합니다."credsStore": "ecr-login"설정이 .docker/config.json 파일에 정확히 기재되어 있어야 합니다.
- EC2 인스턴스에 있는
IAM 권한 확인:
- EC2 인스턴스에 부여된 IAM 역할이 AmazonEC2ContainerRegistryReadOnly 또는 AmazonEC2ContainerRegistryFullAccess 권한을 포함하는지 확인하세요.
- EC2 인스턴스에 부여된 IAM 역할이 AmazonEC2ContainerRegistryReadOnly 또는 AmazonEC2ContainerRegistryFullAccess 권한을 포함하는지 확인하세요.
GitHub Secrets 설정 확인:
- AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY 환경변수가 GitHub에 올바르게 설정되어 있는지 확인하세요. 이들은 반드시 ECR에 접근 권한이 있는 IAM 사용자나 역할의 키여야 합니다.
- AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY 환경변수가 GitHub에 올바르게 설정되어 있는지 확인하세요. 이들은 반드시 ECR에 접근 권한이 있는 IAM 사용자나 역할의 키여야 합니다.
실행 문맥 확인:
sudo docker-compose명령어가 제대로 된 권한으로 실행되는지 확인해 보세요. Docker는 일반적으로 루트 권한이 필요합니다.
기존 비슷한 질문과 해결 링크
- 이와 유사한 문제를 다룬 기존 답변이 있습니다. 다음 링크를 참조하여 추가적인 정보를 확인할 수 있습니다: EC2에 배포하기 전에 기존 이미지를 삭제하고 배포해도 되나요?
이 방법들을 통해 문제를 해결할 수 있기를 바랍니다. 만약 문제가 지속된다면 추가적인 정보를 제공해 주시면 더 도와드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




