JSCODE Logo
블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] ECR이란 무엇일까? / 비공개 리포지토리 생성하기

JSCODE 시니
JSCODE 시니
2026. 04. 09.
author
JSCODE 시니
category
Jenkins CI/CD
createdAt
Apr 9, 2026 12:57 PM
isPublic
isPublic
series
Jenkins를 활용한 CI/CD 입문 (with.AWS)
slug
what-is-aws-ecr-private-repository-jenkins
type
post
updatedAt

✅ 1. ECR이란 무엇일까?

  • ECR은 Elastic Container Registry의 약자이다.
  • ECR은 쉽게 말해서 AWS가 운영하는 비공개 도커 이미지 저장소라고 생각하면 된다.
 
 

✅ 2. 비공개 리포지토리 생성하기

notion image
  • ECR 서비스로 접속한다.
notion image
  • 리포지토리 생성 버튼을 클릭한다.
notion image
  • 리포지토리 이름은 우리의 APP_NAME과 동일하게 입력한다.
notion image
  • 생성이 완료 되면 URI 주소를 복사한다.
pipeline { // 전역 에이전트를 사용하지 않음으로써 컨테이너 중첩 방지 agent none environment { REACT_APP_VERSION = "1.0.$BUILD_ID" APP_NAME = 'myjenkinsapp' AWS_DEFAULT_REGION = 'ap-northeast-2' AWS_DOCKER_REGISTRY = '리포지토리 URI 주소' AWS_ECS_CLUSTER = 'punctual-crocodile-2buaov' AWS_ECS_SERVICE_PROD = 'LearnJenkinsApp-Service-Prod' AWS_ECS_TD_PROD = 'LearnJenkinsApp-TaskDefinition-Prod' } stages { stage('Build') { ... 중략 } stage('Build Docker image') { agent { docker { image 'amazon/aws-cli' reuseNode true args "-u root --entrypoint='' -v /var/run/docker.sock:/var/run/docker.sock" } } steps { withCredentials([usernamePassword(credentialsId: 'my-aws', passwordVariable: 'AWS_SECRET_ACCESS_KEY', usernameVariable: 'AWS_ACCESS_KEY_ID')]) { sh ''' yum install -y docker # 애플 실리콘칩(M1,M2 등) 사용자는 해당 옵션 붙이기 docker build --platform linux/amd64 -t $APP_NAME:$REACT_APP_VERSION . # docker build -t $APP_NAME:$REACT_APP_VERSION . docker push $AWS_DOCKER_REGISTRY/$APP_NAME:$REACT_APP_VERSION ''' } } } stage('Deploy to AWS') { ... 중략 } } }
  • 우리가 AWS 자격증명을 Jenkins에 등록했다고 하더라도, ECR에 도커 이미지를 업로드하려면 로그인 인증을 진행해야 한다.
aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_DOCKER_REGISTRY
  • 해당 명령문을 통해 로그인을 진행할 수 있다.
  • 해당 구문을 docker push 전에 추가해준다.
  • 해당 구문까지 추가하여 빌드를 진행해보면, 오류가 나는 것을 확인할 수 있다. 왜 그럴까?
  • IAM 권한이 없기 때문이다. IAM 권한을 부여해보자.(스스로)
 
 

✅ 3. IAM 권한 부여

  • 권한명 : AmazoneEC2ContainerRegistryFullAccess
notion image
  • 권한 부여 후 확인 해보면 로그인이 성공적으로 된 것을 확인 할 수 있다.
notion image
  • ECR 에서도 해당 도커 이미지가 잘 올라와 있는 것을 확인할 수 있다.
 

✅ 4. Tag명 변경

# docker build -t $AWS_DOCKER_REGISTRY/$APP_NAME:$REACT_APP_VERSION .
  • Docker ECR은 같은 원격 저장소에 Push 할 때, 반드시 로컬에 있는 이미지 태그명이 원격주소랑 100% 똑같아야 한다.
  • 해당 부분을 반드시 변경할 것
 
author
category
Jenkins CI/CD
createdAt
Apr 9, 2026 01:25 PM
isPublic
isPublic
series
Jenkins를 활용한 CI/CD 입문 (with.AWS)
slug
type
series-footer
updatedAt
📎
이 글은 Jenkins를 활용한 CI/CD 입문 (with.AWS) 강의의 수업 자료 중 일부입니다.