Amazon ECR - Private Repository

Private Repository

  • 소개
  • 준비
  • 생성

 

https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/what-is-ecr.html

 

Amazon Elastic Container Registry란 무엇입니까? - Amazon ECR

Amazon Elastic Container Registry란 무엇입니까? Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장 가능하고 신뢰할 수 있는 AWS 관리형 컨테이너 이미지 레지스트리 서비스입니다. Amazon ECR은 AWS IAM을

docs.aws.amazon.com

 

소개

- Amazon Elastic Container Registry

Amazon Elastic Container Registry(Amazon ECR)는 안전하고 확장 가능하고 신뢰할 수 있는 AWS 관리형 컨테이너 이미지 레지스트리 서비스입니다. 

공식문서에서 Amazon ECR을 소개하는 첫 문장이에요. 안전하다는 게, 확장 가능하다는 게 어떤 의미인지 알겠는데 그래서 레지스트리가 뭔지 윈도우즈 레지스트리 같은 건지 리파지토리는 또 뭔지 잘 모르겠어요. 이럴 땐 용어 설명부터 훑고 가는 게 좋을 것 같아요. 

 

- Registry vs Repository

컨테이너 이미지 레지스트리 서비스하면 딱 떠오르는 게 하나 있어요. 

https://hub.docker.com/ 

 

Docker Hub Container Image Library | App Containerization

We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy policy

hub.docker.com

그리고 저는 도커 계정에 xodwkx2/show-me-host라는 이름의 공개 리파지토리 하나와 xodwkx2/nginx-agent라는 이름의 비공개 리파지토리 하나. 이렇게 2개의 리파지토리를 만들어 놨어요. 

docker hub - repositories

그리고 xodwkx2/show-me-host 리파지토리에 들어가 보면 1.0.0, 2.0.0이라는 태그를 달고 있는 2개의 컨테이너 이미지가 있는 걸 볼 수 있어요.

docker hub - show-me-host images

레지스트리는 리파지토리들의 모음이고 리파지토리는 태그로 구분된 비슷한 이미지들의 모음이에요. 이제 확실하게 컨테이너 레지스트리와 리파지토리의 차이를 알 수 있어요. 

 

이 구조는 Amazon ECR에서도 똑같이 되어있고 마찬가지로 Amazon ECR에서도 공개 레지스트리와 비공개 레지스트리를 만들 수 있어요. 저는 비공개 레지스트리만 만들고 여기에 이미지를 업로드하는 것만 해보려고 해요.

 

준비

무언가 새로운 기술을 접할 때 눈으로 조용히 문서만 뒤적거리면 확 와닿지 않고 뜬구름 잡는 것 같아서 웬만하면 손을 쓰면서 공부하는 걸 좋아하는데 이번 ECR 같은 경우엔 바로 시작할 수 없고 먼저 준비해야 할게 몇 가지 있어요. 

 

- AWS 가입

- IAM 사용자 생성

[AWS] - AWS IAM - first IAM admin user 만들기

 

AWS IAM - first IAM admin user 만들기

AWS IAM이란? Root 계정과 모범사례 AWS IAM 관련 용어 AWS IAM이란? AWS Identity and Access Management(IAM)은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. IAM을 사용하여 리소스..

xodwkx2.tistory.com

- AWS CLI 설치

[AWS] - Amazon EC2 - UserData & AWS CLI

 

Amazon EC2 - UserData & AWS CLI

Scale Out vs Scale Up Amazon EC2 - User Data AWS Command Line Interface 2022.03.04 - [AWS] - Amazon EC2 - Web Server 만들기 Amazon EC2 - Web Server 만들기 EC2에 웹 서버를 올리고 웹 서비스를 서비스..

xodwkx2.tistory.com

- Docker 설치

[Docker] - Docker Engine 설치하기

 

Docker Engine 설치하기

https://docs.docker.com/engine/install/ Install Docker Engine docs.docker.com Docker가 무엇인지 알아보기 는 잠시 뒤로 미뤄두고 일단 설치 먼저 합니다 지원하는 플랫폼 확인 Docker는 3가지 채널을 통해..

xodwkx2.tistory.com

 

그리고 또 중요한 거 한 가지. 요금. Amazon ECR은 free tier에서 500MB까지는 무료래요. 그래서 전에 무지성으로 만든 도커 이미지도 베이스 이미지를 alpine으로 변경하고 다른 프레임워크 설치 없이 최대한 간단하게 다시 만들었어요. (900MB -> 116MB)

 

#비용#최적화#성공적

 

생성

Amazon ECR - Create a repository

그럼 시작하기를 눌러서 repository를 만들어볼까요?

Amazon ECR - Repository name

리파지토리 공개 여부와 이름을 정해주는 중요한 단계예요. 아래 팝업에서도 보이듯 한 번 정하면 못 바꿔요. 리파지토리 이름의 경우는 닉네임/이미지 이름 이렇게 지어주었어요. 도커 허브에서는 좋든 싫든 도커 허브 아이디가 항상 붙었지만 이 레지스트리는 제 거고 저만 사용할 거라서 이렇게 '닉네임/'이라고 네임스페이스를 만들어 붙여주지 않아도 되지만 여럿이 같이 사용하거나 할 때 혹은 리파지토리가 많아서 구분해야 할 필요가 있을 땐 이렇게 네임스페이스를 만들어서 나눠줄 수 있다.라는 것 기억해주세요. 맨 처음 리파지토리를 만들 때 리파지토리에 대한 개념이 잘 안 잡혀있어서 xodkwx2-repository라고 만들었었는데 이렇게 하니까 '이 리파지토리에 올라간 이미지가 도대체 뭔가'하고 헷갈렸던 적이 있어요. 

Amazon ECR - private repository / xodwkx2/showmehost

자 이렇게 repository를 만들면 우측 상단에 view push command라는 버튼을 눌러주세요. 그리고 거기 나와있는 명령어들을 복사해서 붙여 넣기만 하면 AWS CLI에서 ECR을 사용할 수 있게 세팅이 되고 이미지를 바로 올릴 수 있는 방법도 알려줘요.

 

Upload Image

Amazon ECR - upload image to repository

이 부분은 View push command를 눌러서 나오는 팝업창을 보고 해 주세요. 제가 했던 건 참고자료용으로 올려놓을게요. 위 내용을 살펴보면 AWS CLI에서 get-login-password를 통해서 로그인 키를 받아오고 이 키로 레지스트리에 docker cli를 통해서 로그인을 해요. 이렇게 비공개 레지스트리에 접근할 수 있는 인증을 받을 수 있어요. 그리고 미리 올려놓은 showmehost라는 이미지에 태그를 달고 docker push 명령어를 통해서 이미지를 Amazon ECR에 만들어 놓은 리파지토리에 올렸어요.

 

이렇게 하고 repository 콘솔에서 확인하면 아래와 같이 이미지가 업로드되어있는 것을 볼 수 있어요.

Amazon ECR - xodwkx2/showmehost

 

이렇게 해서 Amazon ECR의 레지스트리란 무엇인지 리파지토리와는 뭐가 다른지 알아보고 비공개 리파지토리를 만들고 이미지를 업로드하는 것까지 해봤어요.