만자의 개발일지

[Docker] Docker 이미지 ECR에 푸쉬하기 본문

Docker

[Docker] Docker 이미지 ECR에 푸쉬하기

박만자 2021. 12. 28. 21:19

도커 엔진에서 사용하는 기본 단위는 컨테이너와 이미지 입니다. 이 두 가지가 도커의 핵심이라고 할 수 있습니다.

앞서 Dockerfile을 사용하여 이미지를 만들어 보았습니다. 도커로 빌드한 이미지를 서버에 배포하기 위해 직접 파일을 복사하는 방법 대신 이미지 저장소에 이미지를 push한 후 서버에서 이미지를 pull받아 실행하는 방법을 사용합니다. 

 

이번 포스팅에서는 AWS에서 제공하는 이미지 저장소인 ECR(Elastic Container Registry) 서비스를 이용하여 도커 이미지를 ECR에 push 한 후 서버에서 ECR에 있는 이미지를 불러오는 것 까지 해보도록 하겠습니다. 

 

ECR 생성

먼저 이미지를 푸쉬할 ECR을 생성해봅시다.

AWS 콘솔에 들어가서 ECR을 검색한 후 들어갑니다.

그러면 다음과 같은 화면이 보일텐데 오른쪽 상단에 있는 Get Statrted 버튼을 클릭해줍니다.

그러면 ECR생성 화면이 뜰 것이고 Private 으로 할지 Public으로 할지 선택하라고 뜰 것입니다.

우리는 가볍게 테스트만 진행할거라 외부에 이미지를 공개할 필요는 없기 때문에 Private으로 생성해주도록 합니다.

Repositry name은 <자신의 Account ID>.dkr.ecr.<region>.amazonaws.com/<repository name> 입니다.

빈칸에 자신의 ECR repository 명을 입력해주시면 됩니다.

그 다음 Create repositry 버튼을 클릭해 주시면 됩니다.

 

이미지 push

이미지를 push하기 앞서 필자는 Bastion에서 작업하였고, 작업하기 위해서는 ECR IAM Role이 필요합니다.

 

이미지를 push하려면 aws ecr get-login-password 명령으로 authorization token 을 발급받아야 됩니다. 이 authorization token 은 12시간 동안 유효하며, 이미지를 저장할 때 마다 필요로 합니다.

$ aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com

위 명령어를 통해 ECR에 대해 Docker 클라이언트를 인증할 수 있습니다. 

aws ecr get-login-password 명령어로 docker authorization token을 발급받고 docker login 명령으로 넘겨줍니다.

 

인증까지 완료했으니 이제 이미지를 만들고 ECR로 생성된 이미지를 푸쉬해봅시다.

$ docker build . -t <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>:<tag>

언제나 그랬듯이 docker build 명령어를 통해 이미지를 생성해줍니다. 여기서 중요한 것은 이미지의 REPOSITORY 정보를 ECR Repository URL로 지정해줘야 합니다. 

 

이제 만든 이미지를 ECR로 푸쉬 해봅시다.

docker push 명령어를 통해 이미지를 푸쉬 할 수 있습니다.

$ docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<my-repository>:<tag>

The push refers to repository [<aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>]
1d73d66b5d36: Pushed
ad01c5b0a66c: Pushed
62278a60c9bf: Pushed
.
.
.

위와 같은 결과가 뜬다면 업로드가 잘 진행되고 있는겁니다.

ECR로 돌아갔을때 위와 같이 이미지가 생성되었다면 성공적으로 업로드 된겁니다.

이제 원할때 마다 ECR에 있는 이미지를 pull 명령어를 통해 불러오실 수 있습니다.

ECR에 있는 이미지를 pull 하실 때는 아래와 같이 명령어를 사용해주시면 됩니다.

$ docker pull <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<repository_name>:<tag>
Comments