반응형


AWS ECR 사용 방법 총정리

전체적인 내용과 순서는 아래와 같다.
1. 도커 이미지를 만들고
2. ECR에 이미지를 올린 다음
3. EC2 VM에서 해당 이미지를 가져와 사용하는 방법을 정리

0. 사전 조건


- AWS 계정 보유 > EC2 인스턴스 생성 > ssh 접속 설정 완료 > IAM 권한 설정 완료
- ECR 레퍼지토리 생성 완료 > 정책등록 완료 > IAM 권한 설정 완료
- AWS CLI 설치 완료

1. 도커 이미지 만들기

ec2 에서 도커를 설치하고 샘플로 이미지를 만들어 보자.

https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/getting-started-cli.html
설치 및 샘플 이미지 만드는 것은 위의 내용을 참고하였음.

$ sudo yum update -y

$ sudo amazon-linux-extras install docker

$ sudo service docker start

$ sudo usermod -a -G docker ec2-user

$ docker info

도커 이미지 만들기

Dockerfile 작성
$ touch Dockerfile
$ vim Dockerfile

FROM ubuntu:18.04 # Install dependencies RUN apt-get update && \ apt-get -y install apache2 # Install apache and write hello world message RUN echo 'Hello World!' > /var/www/html/index.html # Configure apache RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \ echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \ echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ chmod 755 /root/run_apache.sh EXPOSE 80 CMD /root/run_apache.sh

빌드

$ docker build -t hello-world .

이미지 생성

$ docker images --filter reference=hello-world

이미지 실행

$ docker run -t -i -p 80:80 hello-world

이미지 실행 확인

로컬 PC에서 브라우저를 통해 ec2 ip로 접근
(ec2 ip는 curl이 설치된 경우 vm에서 $ curl ifconfig.me 실행을 통해 알아낼 수 있음)
브라우저에서 Hellow, World! 가 나오면 정상 동작하는 것임


2. ECR에 로컬에서 만든 이미지를 푸시하는 방법

자, 이제 앞에서 만든 이미지를 ECR에 올려보자.

ECR 사용을 위한 로그인

aws ecr get-login-password --region regionID | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.regionID.amazonaws.com
바로위 내용으로 미리 로그인을 하지 않으면 권한 에러가 나고 docker push가 안된다.
레퍼지토리의 정책에 해당 사용자의 권한을 주는 것도 잊지 말자.

이미지의 tag를 수정해줌

$ docker tag hello-world:latest 701234567890.dkr.ecr.us-east-1.amazonaws.com/project_repo

수정된 tag를 이용해서 푸시

$ docker push 701234567890.dkr.ecr.us-east-1.amazonaws.com/project_repo
Using default tag: latest
The push refers to repository [701234567890.dkr.ecr.us-east-1.amazonaws.com/project_repo]
d22a665fdc86: Pushed
d2f6af949869: Pushed
0840544a05e8: Pushed
6babb56be259: Pushed
latest: digest: sha256:a0f90959d7146c7a2dff91665312eeeda12345678904f1asdkbdjs9ad5b4 size: 1155
$


3. EC2 VM에서 해당 이미지를 가져와서 실행하는 방법

이제는 ec2 instance에서 올려 놓은 이미지를 풀 해서 사용하는 것을 해보자.

이미지 pull

$ docker pull 701234567890.dkr.ecr.us-east-1.amazonaws.com/project_repo

이미지 실행

$ docker run 701234567890.dkr.ecr.us-east-1.amazonaws.com/project_repo

로컬에서 처럼 IP 확인

$ curl ifconfig.me
111.111.111.111

동작 확인

로컬 PC에서 해당 IP 로 접속해서 로컬에서 처럼 Hello World! 가 나오는지 확인.
끝.























반응형

+ Recent posts