Post

[AWS] ECR에 이미지 올리고 컨테이너 실행

✅ECR(Elasitc Container Registry)?


Amazon Elastic Container Registry는 어디에서나 컨테이너 이미지와 아티팩트를 손쉽게 저장, 관리, 공유 및 배포할 수 있는 완전관리형 컨테이너 레지스트리입니다. Amazon ECR을 사용하면 자체 컨테이너 리포지토리를 운영하거나 기본 인프라 확장에 대해 걱정할 필요가 없습니다. Amazon ECR은 이미지를 가용성이 뛰어난 고성능 아키텍처에 호스팅함으로써 컨테이너 애플리케이션용의 이미지를 안정적으로 배포할 수 있습니다.

✅실습


☑️Docokerfile 만들기

1
2
3
4
5
6
$ sudo mkdir dockerfile-lab && cd $_
$ sudo cp ~/index.html .
$ sudo vi index.html
$ sudo mkdir images
$ sudo cp ~/two-rabbit.jpg ./images
$ sudo tar -cvf web-site-v1.tar index.html images/

먼저 AWS Cloud9 콘솔로 들어가셔서 위의 명령어를 입력합니다. 그 전에 파일을 먼저 업로드 해야겠죠? dockerfile-lab/ 폴더를 만들어서 여기에 index.html과 jpg 이미지 파일을 복사한 뒤 이미지 파일은 또다시 images/ 폴더에 넣고 같이 압축파일로 만듭니다.

1
2
3
4
5
6
7
8
9
$ sudo vi Dockerfile
FROM ubuntu:latest # 베이스 이미지
RUN apt update && apt install -y -q nginx # 실행할 명령어, 여기선 nginx 설치
ADD web-site-v1.tar /var/www/html  # ADD는 tar -xvf (압축풀기)와 비슷하다
CMD ["nginx", "-g", "daemon off;"] #systemctl enable --now nginx와 비슷

$ docker image build -t web-site:v1.0 ./

$ docker container run -d -p 80:80 --name webserver web-site:v1.0

Dockerfile 생성 및 내용 추가 후, 이미지 빌드 및 컨테이너 실행합니다.

Untitled

cloud9 인스턴스 보안그룹에서 80포트 열어 놓기!

☑️ECR 생성

Untitled

ECS - ECR - 퍼블릭 레포 - 레포지토리를 생성합니다.

Untitled

생성된 레포 ID 확인을 합니다

☑️ECR 업로드

1
2
3
4
5
$ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/h8y2y3u1
$ docker image tag web-site:v1.0 public.ecr.aws/h8y2y3u1/web-site:v1.0 #기존 이미지를 이름 바꿔서 태깅
$ docker image tag web-site:v2.0 public.ecr.aws/h8y2y3u1/web-site:v2.0
$ docker image push public.ecr.aws/h8y2y3u1/web-site:v1.0 # 등록된 이미지를 ECR에 등록
$ docker image push public.ecr.aws/h8y2y3u1/web-site:v2.0

Untitled

push를 하면 aws 퍼블릭 레포에서 볼 수 있습니다.

1
docker container run -d -p 8080:80 --name webserver2 public.ecr.aws/h8y2y3u1/web-site:v2.0

아까 올린 이미지를 webserver2로 실행시킵니다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.