AWS ECR은 도커 허브와 같은 컨테이너 이미지 레지스트리 서비스다. AWS IAM 계정을 사용하여 프라이빗(Private) 리포지토리를 사용할 수 있고 AWS CLI를 이용하여 도커 이미지를 리포지토리에 푸시(Push), 풀(Pull), 삭제할 수 있다.
ECR을 사용하면 AWS EC2 및 ECS에서 컨테이너 리포지토리 및 도커 이미지에 액세스할 수 있으며 도커 이미지 스캔을 지원하기 때문에 사용에 따른 이점이 많다.
ECR생성 화면이 뜰 것이고 Private 으로 할지 Public으로 할지 선택하라고 뜰 것이다. 우리는 외부에 이미지를 공개할 필요는 없기 때문에 Private으로 생성한다.
이미지를 push하기 위해서는 ECR IAM Role이 필요하다. 이미지를 push하려면 aws ecr get-login-password 명령으로 authorization token 을 발급받아야 한다. 이 authorization token 은 12시간 동안 유효하며, 이미지를 저장할 때마다 필요하다. 생성한 레포지토리에 들어가서 <푸쉬 명령 보기>를 클릭하여 순차적으로 따라하면 ecr에 이미지를 push하는 것이 가능하다.
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
# 이미지 build
docker build . -t <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>:<tag>
# 이미지 ecr에 push
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<my-repository>:<tag>
여기까지 모두 진행하고 나면 ecr private repository에 성공적으로 생성한 이미지가 업로드 되어 있는 것을 확인 할 수 있다.
ecr에 이미지를 push하는 방법도 알았고 각 프로젝트의 개발 코드를 도커라이징 하는 방법도 알았기 떄문에 이제는 알고있는 내용을 바탕으로 CI/CD 작업을 진행 할 계획이다. push된 이미지를 자동으로 가져와서 새롭게 배포할 수 있도록 github action를 사용하여 CI/CD를 구축해볼 것이다.