티스토리 뷰

반응형

Docker를 사용하면서 뭔가 배포와 관련된 내용들을 많이 올리게 되었습니다. 그래서 그런지 Dockerfile로 생성한 Image들의 대한 관리가 이루어지는 원격 리포지토리가 없을까 생각하다가 찾아보니 DockerHub라는 것을 알게 되었습니다. DockerHub에 대한 정의는 쉽게 찾아봐도 많이 나오기 때문에 생략해도 좋을 것 같습니다 :)

공식 홈페이지 : https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your team's container applications.

hub.docker.com

 

그렇다면 이번에는 AWS에서 제공하는 DockerHub인 ECR에 대해 알아보려 합니다. 

AWS ECR (EC2 Container Registry) 

1. ECR과 ECS (Elastic Container Service)

아마존에서 제공하는 Docker Image를 관리하는 리포지토리입니다. 리포지토리는 S3와 연결되어 저장소를 가지게 되고, AWS에서 저번에 만들었던 IAM의 액세스키와 보안 액세스키 2개를 사용하여 통신하게 됩니다. 장점으로는 image push와 pull이 자유롭다는 특징이 있습니다. 

하지만 ECR은 AWS Console 에서 검색해보면 나오지 않고 다른 서비스들만 출력되게 됩니다. 

Elastic Kubernetes Service 는 서버의 상태관리를 해주는 쿠버네티스를 활용하는 서비스이고, 우리가 이번에 찾아볼 ECR은 Elastic Container Service 내에 위치하고 있습니다. 

그래서 이를 사용하기 위해서는 파이프라인에 대한 지식이 조금 있어야합니다. 

 

2. 리포지토리 생성하기

리포지토리를 생성하면 아래와 같이 ECR URL 이 뜨게되고 여기에서 IAM에 등록한 액세스 키로 접근하기 위한 private 리포지토리로 생성해줍니다. 

그리고 여기서 하나의 리포지토리는 하나의 이미지와 매핑되게 됩니다. 

 

리포지토리를 생성하면 아래 그림과 같이 리스트를 확인할 수 있습니다. 

 

3. 로컬에서 ECR에 푸시하기

3-1. 푸시를 하기 전에 AWS CLI 를 설치해야 합니다. 설치하는 방법은 아래에 적어두었어요 :) 

https://abbo.tistory.com/307

 

AWS CLI 설치하기

AWS 를 사용하다 보면 AWS CLI 라는 녀석이 있는데 이 녀석은 무엇일까요? 우리는 서버에 접속할 때 대부분 cli 기반으로 움직이고, 특히 AMI 서비스를 많이 운영하는 AWS 에서는 자체 서비스를 운영하

abbo.tistory.com

 

3-2. macOS 기준 설정하기

그 다음으로 다운로드한 .pkg 파일을 소스로 지정하여 표준 macOS installer 프로그램을 실행합니다. pkg 파라미터를 사용하여 설치할 패키지의 이름을 지정하고 target / 파라미터를 사용하여 패키지를 설치할 드라이브를 지정합니다.

파일은 /usr/local/aws-cli에 설치되고 /usr/local/bin에 symlink가 자동으로 만들어집니다. 해당 폴더에 쓰기 권한을 부여하려면 명령에 sudo를 포함해야 합니다.설치가 완료되면 디버그 로그가 /var/log/install.log에 기록됩니다.

sudo installer -pkg ./AWSCLIV2.pkg -target /

 

3-3. aws 가 잘 설치되었는지 확인하기 

shell이 aws에서 $PATH 명령을 찾아서 실행할 수 있는지 확인하려면 다음 명령을 사용합니다.aws 명령을 찾을 수 없는 경우 터미널을 재시작하거나 경로에 AWS CLI 추가에 나온 지침을 따라야 할 수도 있습니다.

$ which aws
/usr/local/bin/aws

$ aws --version
aws-cli/2.4.5 Python/3.8.8 Darwin/18.7.0 botocore/2.4.5

 

4. 로그인 정보 설정하고 Docker 로그인

이제 ECR에 접근하기 위해서 aws configure 로 설정했던 인증 정보를 도입하는 과정입니다. 인증이 되면 docker login을 시도하는데 여기서 위에 ECR 리포지토리에서 생성했던 도메인 URL의 주소가 필요합니다. 

aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin ${여기에도메인넣기}.dkr.ecr.ap-northeast-2.amazonaws.com

 

5. Docker Image Build 

Dockerfile 이 있는 경로에서 도커 이미지 빌드하는 명령어를 씁니다.

docker build -t ${컨테이너명} .

 

6. Docker Image Tag 달기

5에서 빌드된 이미지를 원격 ECR에 푸시합니다. 

docker tag ${컨테이너명}:latest ${도메인}.dkr.ecr.ap-northeast-2.amazonaws.com/${컨테이너명}:latest

여기서 latest는 붙여도 되고 안붙여도 되는 일종의 버전입니다. 기본 최신이면 latest가 붙습니다.

 

7. Docker Image Push 하기

docker push ${도메인}.dkr.ecr.ap-northeast-2.amazonaws.com/${컨테이너명}:latest

 

8. EC2 서버에서 ECR에 있는 이미지 pull 받기

aws configure 가 된 EC2에 접속하면 아래 명령어를 써서 이미지를 pull 받을 수 있습니다. 

docker pull ${도메인}.dkr.ecr.ap-northeast-2.amazonaws.com/${컨테이너명}
반응형
댓글
공지사항