-
[AWS] AWS ECR을 활용해서 EC2에서 도커로 배포하기-1docker 2024. 12. 8. 13:49
AWS ECR을 활용해서 EC2에서 도커로 배포하기
AWS ECR이 뭘까?
- 기존에는 필요한 이미지를 다운 받을때 dockerhub를 이용했었다.(dockerhub는 이미지를 저장하고 다운받을 수 있는 저장소이다.)
- dockerhub와 같은 역할을 하지만 브랜드만 다른 서비스가 있다. 그것이 AWS ECR이다. AWS ECR도 dockerhub와 마찬가지로 이미지를 저장하고 다운받는 역할을 한다그럼 왜 dockerhub를 안쓰고 AWS ECR을 쓸까?
최근에는 aws클라우드 환경에서 인프라를 구축하는 일이 많아졌다. AWS ECR을 사용하면1. AWS Resource(서비스)와 연동이 편하고
2. AWS내에서 한번에 관리할 수 있다는 장점이 있다.
(물론 dockerhub를 써도 상관없다)
AWS ECR을 왜 배울까?
docker를 사용하지 않았을때는 많은 사람들이 github를 사용해서 배포하였다. 프로젝트 코드를 github에 push한뒤에 aws ec2에 접속해서 해당코드를 pull받아서 실행한다.이 방식은 프로젝트 코드 전체를 EC2로 이동시켜야하며, 프로젝트 코드를 실행시킬 런타임환경(node, jdk)등도 설치되어있어야 실행이된다.
docker의 가장 큰 장점은 이식성이다. docker만 깔려있으면 어디서든 내가 원하는 프로젝트를 실행 시킬 수 있다는 장점이 있다. 이때 github를 활용해 프로젝트 코드 전체를 ec2로 옮겨 docker기반으로 실행시켜도 된다. 하지만 프로젝트에서 필요한 코드에 대해서만 docker 이미지로 빌드해, ec2에서는 그 이미지만 다운받아서 실행시키는게 훨씬 더 단순하다.
정리하자면 AWS ECR을 배우는 이유는 훨씬 더 간단하게 프로젝트를 배포하고 실행시키기위해서이다.ecr로 ec2에 컨테이너 배포 과정
로컬컴퓨터 --(이미지 푸시)--> ECR --(이미지 풀)--> EC2 의 과정을 거쳐서 이미지가 전달된다.
준비사항
1. 로컬컴퓨터와 ec2에 모두 aws CLI 가 설치되어 있어야한다.
2. ECR 권한이 있는 IAM 사용자 계정을 발급받은 뒤 이 IAM사용자 계정의 액세스키를 로컬컴퓨터에 설정해야한다.
준비사항1 - AWS CLI설치
- 맥OSbrew install awscli aws --version # 설치 확인
- 윈도우
https://awscli.amazonaws.com/AWSCLIV2.msi # 이 링크에서 다운받아 설치 aws --version # 설치(버전)확인
- 우분투(ec2)sudo apt install unzip curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install aws --version # 설치확인
준비사항2 - IAM 사용자 생성 / 등록
1. IAM 사용자 생성하기
AWS IAM - 사용자 - 사용자 생성(사용자이름지정, 직접정책연결) - AmazonEC2ContainerRegistryFullAccess권한 부여 - 사용자 생성
2. IAM 사용자 액세스키 발급
AWS IAM 사용자 - 보안자격증명 - 액세스키 발급 - 외부에서 실행되는 어플리케이션 - 액세스키 생성
※한번 보여진 액세스 키는 다시 볼 수 없으므로 따로 저장해서 잘 관리한다
3. 로컬과 ec2에 액세스키 등록
로컬(AWS CLI 설치된 상태)
aws configure AWS Access Key ID [None]: [액세스키 입력] AWS Secret Access Key [None]: [액세스 시크릿 키 입력] Default region name [None]: [ap-northeast-2 입력] Default output format [None]: (무시)
EC2(AWS CLI 설치된 상태) (동일)
aws configure AWS Access Key ID [None]: [액세스키 입력] AWS Secret Access Key [None]: [액세스 시크릿 키 입력] Default region name [None]: [ap-northeast-2 입력] Default output format [None]: (무시)
(준비사항 끝)
AWS ECR(Elastic Container Registry) 셋팅하기
1. ECR 레포지토리 생성
AWS ECR(elastic container registry) - 레포지토리 이름 - 레포지토리 생성
※일반적으로 하나의 ECR 레포지토리에는 한종류의 이미지만 저장하고 관리한다
2. 도커파일 작성
3. ECR에 이미지 PUSH
푸시명령보기 순서따라하기
AWS ECR 레포지토리 - 푸시명령보기
4. 필요한 곳에서 이미지 PULL
AWS ECR 레포지토리 - 이미지 - 이미지 URI복사 docker pull [이미지 URI]
'docker' 카테고리의 다른 글
[docker] docker compose로 nestJS, postgresql, redis 서버 띄우기 (0) 2024.12.07 [docker] docker compose 로 mysql 서버 띄우기 (0) 2024.12.07 [docker] docker로 nestJS 서버띄워보기 (0) 2024.12.07 [docker] 도커파일 만들기1 (0) 2024.12.07 [docker] docker volume으로 mysql 서버띄우기 (0) 2024.12.06