인스턴스 연결 후
docker , docker compose 설치
$ sudo apt-get update && \
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo apt-key fingerprint 0EBFCD88 && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
sudo apt-get update && \
sudo apt-get install -y docker-ce && \
sudo usermod -aG docker ubuntu && \
newgrp docker && \
sudo curl -L "https://github.com/docker/compose/releases/download/2.27.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker -v # Docker 버전 확인
$ docker compose version # Docker Compose 버전 확인
AWS ECR이 뭘까?
필요한 이미지를 다운로드 받을 때 Dockerhub이라는 곳에서 다운받는다고 했었다. Dockerhub에서는 이미지를 저장 및 다운받을 수 있는 저장소 역할을 한다고도 했다.
Dockerhub과 동일한 역할을 하는 서비스가 하나 더 있다. 그게 바로 AWS ECR이다. AWS ECR도 이미지를 저장 및 다운받을 수 있는 저장소 역할을 한다. 우리는 이 AWS ECR에 대해 배울 것이다.
왜 Dockerhub 대신에 AWS ECR을 사용하는가?
최근에는 AWS 클라우드 환경에서 인프라를 구축하는 일이 많아졌다. AWS ECR을 사용하면 다른 AWS Resource와의 연동이 편하고, AWS 내에서 한 번에 관리할 수 있기에 편하다는 장점이 있다.
(물론, Dockerhub을 사용해도 크게 문제는 없다 😊)
AWS ECR을 왜 배우는지?
Docker를 사용하지 않았을 때 많은 사람들이 사용하는 배포 전략 중 하나는 Github을 활용하는 방법이다. 프로젝트 코드를 Github에 Push 한 뒤에, AWS EC2에 접속해서 해당 코드를 Pull 받아서 실행시키는 방식을 많이 사용한다. 이 방식은 프로젝트 코드 전체를 EC2로 이동시켜야 하며, 프로젝트 코드를 실행시킬 런타임 환경(Node, JDK 등)도 설치되어 있어야만 실행이 된다.
Docker의 가장 큰 장점은 이식성이다. Docker만 깔려있으면 어디에서든 내가 원하는 프로젝트를 실행시킬 수 있다는 게 장점이다. 이 때 Github을 활용해 프로젝트 코드 전체를 EC2로 옮겨 Docker 기반으로 실행시켜도 된다. 하지만 프로젝트에서 필요한 코드에 대해서만 Docker 이미지로 빌드해, EC2에서는 그 이미지만 다운받아서 실행시키는 게 훨씬 심플하다.
정리하자면 AWS ECR을 배우는 이유는 훨씬 간단하게 프로젝트를 배포하고 실행시키기 위해서이다.
AWS ECR 사용해보기
https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html
최신 버전의 AWS CLI 설치 또는 업데이트 - AWS Command Line Interface
이전 버전에서 업데이트하는 경우 unzip 명령을 실행하면 기존 파일을 덮어쓸지 묻는 메시지가 표시됩니다. 스크립트 자동화와 같은 경우에 이러한 프롬프트를 건너뛰려면 unzip에 대한 -u 업데이
docs.aws.amazon.com
[맥(Mac OS)]
$ brew install awscli
$ aws --version # 잘 출력된다면 정상 설치된 상태
[윈도우(Windows)]
- 이 링크(https://awscli.amazonaws.com/AWSCLIV2.msi)를 다운받아 설치하기
- cmd를 실행시켜서 아래 명령어 입력해보기
$ aws --version # 잘 출력된다면 정상 설치된 상태
[우분투(Ubuntu)]
$ 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 # 잘 출력된다면 정상 설치된 상태
✅ IAM 생성하기
사용자 생성 클릭
다음 -> 사용자 생성
생성된 것을 확인할 수 있다.
사용자 이름으로 들어가서 보안 자격 증명에서 엑세스 키를 만들어준다.
aws 외부에서 실행되는 애플리케이션 선택 후 다음 -> 엑세스 키 만들기
그러면 엑세스 키가 생성된 것을 확인할 수 있다. 이 키를 잘 복사해둔다.
터미널에서 엑세스키를 등록한다.
$ aws configure
AWS Access Key ID [None]: <위에서 발급한 Key id>
AWS Secret Access Key [None]: <위에서 발급한 Secret Access Key>
Default region name [None]: ap-northeast-2
Default output format [None]:
연결된 인스턴트 터미널에서도 위와 동일하게 엑세스키를 연결한다.
ecr을 만든다.
위의 명령어를 다입력하고나서 이미지를 확인해보면
이미지가 올라와있다.
이미지를 다운받아보자
$ docker image rm -f [Container ID] # 기존 갖고있던 이미지 지우기
$ docker pull 002177417362.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server
$ docker image ls
'AWS' 카테고리의 다른 글
Express 서버를 EC2에 배포하기 (0) | 2025.03.30 |
---|---|
AWS - EC2 셋팅하기 (0) | 2025.03.30 |
EC2란? (0) | 2025.03.30 |