AWS ECR

조민철·2025년 5월 7일

AWS

목록 보기
20/21
post-thumbnail

ECR

Elastic Container Registry 줄여서 ECR은 AWS에서 사용할 수 있는 컨테이너 저장소이다.많이들 쓰는 Public Container Registry로는 Docker hub가 이미 존재하긴한다. 그래서 ecr 왜 사용하는 걸까? 한번 알아보자

ECR 특징

  • 완전관리형 컨테이너 이미지 레지스트리
    • 컨테이너 이미지를 저장,관리,배포 까지 할 수 있는 완전관리형 서비스로 별도의 인프라 구축이나 유지 보수 없이 바로 사용 가능
  • Registry 및 Repository
    • Registry
      • 계정마다 하나씩 자동으로 제공되는 최상위 컨테이너 이미지 저장소
      • 해당 Registry에 여러 개의 Repository를 생성해서 계층형으로 체계적 관리가능
    • Repository
      • 실제 컨테이너 이미지를 저장하는 논리적 공간
      • 팀, 프로젝트, 서비스 등 목적에 따라 여러 개의 Repository를 생성가능
      • 각 Repository에는 여러 버전의 태그 이미지가 저장가능
  • 보안 및 접근 제어
    • IAM와 통합이 가능해 Repository Policy를 통해 세밀한 권한 관리 가능
    • 이미지 전송 및 저장시 암호화가능
    • VPC 엔드포인트를 이용해서 안전하게 접근가능
  • 타 AWS 서비스와 통합
    • ECS, EKS, Lambda 등 다양한 AWS 서비스와 연동 가능
    • CI/CD 도구(CodeBuild, CodePipeline 등)와 쉽게 통합 가능
  • 이미지 관리 및 최적화
    • 이미지 취약점 스킨 기능 제공, 보안 취약점 탐지 및 대응 가능
    • Lifecycle Policy으로 오래된 이미지 자동 정리 및 저장 공간 최적화
  • 고가용성 및 확장성
    • AWS 글로벌 인프라 기반으로 높은 가용성 및 내구성 제공
    • 리전 간 이미지 복제 대규모 트래픽 대응 등 확장성이 뛰어남
  • 모니터링 및 감사
    • CloudWatch로 사용량, 성능 지표, 이벤트를 모니터링 가능
    • CloudTrail을 통한 API 호출 및 추적 가능

docker hub도 프라이빗한 리포지토리가 존재한다. 단지 공짜는 아니다. 물론 ECR도 공짜는 아니다...
근데 ECR를 사용하게 된다면 AWS 서비스 들과 통합이 쉽게되어서 사용한다.

사용해보기

ecr을 직접 사용해보면 이해가 더 쉽다.

aws ecr create-repository --repository-name test-repo --region ap-northeast-2

먼저 awscli 설정이 끝난 전제로 진행한다.
ecr create-repository 명령어로 리포지토리를 생성해준다.

그럼 json 형태로 이러한 결과를 보여주는데 이때 repositoryurl만 복사해준다. 이러한 url 형식이 컨테이너의 태그이름이 될것이다.
또한 이러한 방식으로 만들면 기본값은 프라이빗 리포지토리이다. 만약 퍼블릭으로 만들고 싶다면 ecr-public으로 명령어를 적어주면 된다.

이제 ecr에 이미지를 넣을려면 생성된 ecr에 대해 인증을 해야한다. 쉽게 말해 로그인을 해야됨

aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.ap-northeast-2.amazonaws.com


aws_account_id에 본인의 aws 계정 id를 넣어줘야함
다음과 같이 뜨면 성공이다.

이제 이미지를 push 하기만하면 된다. 그전에 이미지 태그를 달아줘야하는데 태그는 repositoryurl 형식으로 지어주면된다.


이런씩으로 지어준다음 push 하면 된다.

docker push 컨테이너 이름


이미지가 잘들어갔다.

콘솔에서 확인해보면 다음과같다.

또는 쉘에서 다음명령어를 확인한다.

aws ecr list-images --repository-name test-repo

그럼 이미지 id를 가져올 수 있다.

profile
기록의 힘은 대단하다

0개의 댓글