AWS #8

MIMO·2023년 7월 11일
0

AWS

목록 보기
8/12
post-thumbnail

ECR

멘토링에서 ECR 특강을 듣고 해당 글을 작성한다. 사실 필자는 이 특강을 듣기 전에 dockerhub에 관한 개념도 자세히 알지 못했다. docker를 왜 사용하는 지도 확실히 알기 보다 어느정도 감으로만 알고 있는 상태였다. Docker에 대한 개념도 잡고, AWS에서 제공하는 많은 것들을 배우기 위해 특강을 듣게 되었다.

ECR?

먼저 ECR이 뭔지 알아야 한다

ECR(Elastic Container Registry)

ECR의 풀네임은 Elastic COntainer Registry이다. 말 그대로 Container를 보관할 수 있는 기능이다. 개념 자체는 어렵지 않다. 그냥 dockerhub와 같은 기능을 AWS에서 제공해 주는 것이다. 실습을 통해 ECR을 사용해보자

도커 설치

Container Registry를 사용하기 위해서는 우선 도커를 사용해야 한다. 도커를 설치하는 방법은 여러가지가 있겠지만 단 2줄만에 도커 설치를 완료할 수 있다.

curl -fsSL https://get.docker.com -o get-docker.sh //설치 스크립트 다운로드
sudo sh get-docker.sh // 설치 확인

위 명령어를 입력하면 도커를 성공적으로 설치할 수 있다. 이후 잘 깔렸는지 확인하기 위해 아래 명령어를 작성하면 도커 설치가 완료되었는지 확인이 가능하다.

sudo docker run hello-world
sudo docker images

도커 이미지 작성

도커를 설치해 주었으면 이미지를 빌드할 수 있다. 이미지를 만들기 이전에 Dockerfile을 만들어서 빌드에 사용될 세팅 값들을 알아줘야 한다. Dockerfile은 간단하게 html에 글이 작성될 수 있는 수준으로 작성해 주었다. 그리고 나서 아래 명령어를 작성하면 이미지를 생성할 수 있다.

sudo docker build -t hello-web //이미지 생성
sudo docker images //이미지 생성 확인
sudo docker run -it -d -p 80:80 --name dcweb hello-web //백그라운드에서 실행


AWS IAM 세팅

위에서 만든 이미지를 ECR에 올리기 전에 AWS IAM세팅을 진행해 주어야 한다. 필요에 맞게 적정한 권한을 세팅해준 뒤 CLI등록을 진행하자. 등록 명령어는 아래와 같다.

sudo apt-get install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip" unzip awscliv2.zip
sudo ./aws/install

위 명령어를 작성하여 cli를 등록하고, IAM 세팅을 통해 발급받은 access key와 secret key를 aws configure를 통해 진행하면 세팅은 완료된다.

Private ECR

AWS에서 제공하는 ECR에는 Private과 Public이 존재한다. Private Registry는 각 AWS 계정마다 제공되며 기존의 docker hub를 대용할 수 있다. 클라이언트는 Amazon ECR 레지스트리에 AWS 사용자로서 인증을 해야 이미지를 Push 혹은 Pull을 할 수 있다.

ECR에 이미지를 등록하는 명령어는 아래와 같다.

ECR 이미지 등록

## 태그 달기
sudo docker tag hello-web [계정].dkr.ecr.ap-northeast-2.amazonaws.com/my-repository:latest

## AWS 로그인
sudo docker login -u AWS -p $(aws ecr get-login-password --region ap-northeast-2) [계정].dkr.ecr.ap-northeast- 2.amazonaws.com

docker login -u AWS -p $(aws ecr get-login-password --region ap-northeast-2) [계정].dkr.ecr.ap-northeast- 2.amazonaws.com
(Login Succeeded)

## 이미지 push
sudo docker push [계정].dkr.ecr.ap-northeast-2.amazonaws.com/my-repository:latest

실습을 진행하면서 AWS 로그인 하는 부분에서 살짝 막혔다. 구글링 해보니 CLI 버전에 따라서 로그인 명령어가 상이하다고 한다. 이를 잘 확인해서 해야할 것 같다. 위 명령어를 치고 이미지를 등록하면 AWS Private ECR Registry에 이미지가 등록된 것을 확인할 수 있다.

ECR 이미지 Pull

올라간 이미지를 Pull하여 사용할 수 있다.

## AWS 로그인
sudo docker login -u AWS -p $(aws ecr get-login-password --region ap-northeast-2) [계정].dkr.ecr.ap-northeast- 2.amazonaws.com

## 이미지 pull
sudo docker pull [계정].dkr.ecr.ap-northeast-2.amazonaws.com/my-repository:latest

간단하다. 로그인 한 뒤에 pull만 하면 된다. 아주 간단한 명령어들이지만 필자는 ECR뿐만 아니라 컨테이너를 가져오는 작업을 처음 진행해보았기 때문에 신기한 마음에 블로그에 작성하는 중이다. (ㅎㅎ)

Public ECR

사실 Public도 Private과 방법이 다른건 아니다. 한 가지 유의할 점은 이미지를 push 할 때 본인의 region을 적어주는 것이 아니라 public ECR이 존재하고 있는 us-east-1을 적어주어야 한다는 것이다.

## AWS 로그인
sudo docker login -u AWS -p $(aws ecr-public get-login-password --region us-east-1) public.ecr.aws/[public repository 주소]

## 이미지 빌드
sudo docker build -t pub-web .

## 이미지 태깅
sudo docker tag pub-web:latest public.ecr.aws/[public repository 주소]/pub-web:latest

## 이미지 푸시
sudo docker push public.ecr.aws/[public repository 주소]/pub-web:latest

위 와 같은 명령어를 사용하여 본인 계정의 Public ECR에 이미지를 올려줄 수 있다.

이렇게 Public에 올린 이미지는 누구나 Pull을 사용하여 가져와줄 수 있다. Pulbic Repository에서 Pull을 위해 사용하는 명령어는 아래와 같다.

## 이미지 pull
sudo docker pull public.ecr.aws/[public repository 주소]/pub-web:latest

## 이미지 태그 변경 및 기동
sudo docker tag public.ecr.aws/[public repository 주소]/pub-web:latest

## 이미지 실행
sudo docker run -it --rm -d -p 80:80 --name websv80

정리

처음에 ECR에 대해 특강을 듣는다 했을 때 호기심이 컸지만 처음 보는 것에 대해 두려움이 없지않아 있었다. 하지만, 특강을 들으면서 모르는 부분들을 많이 배울 수 있었고, 이를 통해 ECR이라는 개념을 어렵지않게 습득할 수 있었다. 아직 Dockerhub를 사용해보기 이전이지만, 해당 hub도 사용해본 뒤 비교해가며 사용해야겠다.

profile
행복한 사람

0개의 댓글