AWS

[AWS] ECR Private Repository에 이미지 푸시

비번변경 2023. 7. 10. 19:25

개요

2023.07.07 - [AWS] ECR 이란?에서 ECR의 개념, 구성 요소, 특징 정도를 간단하게 살펴보았다.

이 글에서는 실제로 레포지터리를 생성해보고, 도커 이미지를 푸시해보려고 한다. 생성할 레포지터리는 프라이빗 레포지터리고, 관련 권한은 이미 부여되어 있다고 가정한다.

참고로 AWS EC2 Ubuntu 20.04에서 테스트하며 EC2에는 간단히 EC2InstanceProfileForImageBuilderECRContainerBuilds 정책을 적용했다.

레포지터리를 사용하기 위해서는 aws cli와 docker가 필요하므로 미설치 상태라면 설치하도록 한다.

apt install awscli
apt install docker.io

 

 

레포지터리 생성

프라이빗 레포지터리를 생성해본다.

 

1. AWS Console에서 레포지토리 생성 버튼 클릭

ECR 서비스로 접근한 뒤 표시한 버튼을 클릭한다.

 

2. 설정 지정

레포지터리가 프라이빗인지 퍼블릭인지, 이름 등을 설정한다.

 

3. 레포지터리 생성

필요 시 다른 설정을 마저 조정하고 레포지터리 생성 버튼을 클릭한다. 이 글에서는 기본값으로 두었다.

 

4. 생성된 레포지터리 확인

이상이 없으면 생성된 레포지터리를 확인할 수 있다.

 

 

레포지터리에 이미지 푸시

사용할 레포지터리를 선택하고 푸시 명령 보기 버튼을 클릭하면, 해당 레포지터리를 사용하기 위한 명령어를 간단히 확인할 수 있다.

레포지터지에 인증하고 푸시하는 명령어 등이 소개되어 있으므로 이 명령어들을 토대로 테스트를 해본다.

 

1. 사용자 인증

ecr get-login 명령을 사용하면 ecr에 인증하기 위한 docker login 명령어를 확인할 수 있다.

aws ecr get-login --no-include-email

이 출력을 붙여넣으면 사용자 인증을 할 수 있다.

또는 ecr get-login-passwd 명령을 사용하면 로그인에 필요한 비밀번호만을 얻을 수 있다. 

이 출력을 파이프로 docker login 명령에 전달한 것이 콘솔에서 확인한 인증 명령어다.

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

 

2. 이미지 빌드

레포지터리에 등록할 이미지를 빌드한다. 이미지에 ECR 프라이빗 레포지터리 주소가 포함되어 있어야 한다.

이 글에서는 간단하게 nginx 이미지의 tag를 바꿔서 테스트한다.

docker tag nginx:latest 5.dkr.ecr.ap-northeast-2.amazonaws.com/passwd_test:latest

 

3. 이미지 푸시

빌드한 이미지를 푸시한다.

docker push 5.dkr.ecr.ap-northeast-2.amazonaws.com/passwd_test:latest

 

4. 푸시된 이미지 확인

ECR 레포지터리에서 푸시한 이미지를 확인할 수 있다.

 

 

참고 문서

https://blog.illunex.com/2020-08-25/

https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html