도커 배포 프로세스 EC2

·2023년 3월 2일
0

docker

목록 보기
7/7
post-thumbnail

EC2 란

EC2 란 Amazon Elastic Compute Cloud 의 줄임말로 AWS에서 제공하는 클라우드 컴퓨팅이다. 독립된 컴퓨터를 임대해주는 서비스로 AWS의 대표적인 서비스이다.

EC2는 복잡한 공유기 세팅없이 인터넷을 통해서 자유롭게 접속할 수 있고, 이미지(AMI) 기능
도 사용할 수 있다. 컴퓨터를 사용하면 프로그램도 설치하고, 파일도 저장하고, 설정도 변경하게 되는데, 이 OS 상태 그대로 저장하는 기능을 이미지(AMI) 라고 한다. 윈도우 백업 설정 이라고 봐도 무방하다.

이미지를 이용해서 새로운 컴퓨터를 만들면 이미지에 저장된 상태와 똑같은 컴퓨터를 빠르게 생성할 수 있다. 즉, 컴퓨터를 하나 장만할 때마다 반복되는 설치 작업을 하지 않게 되는 것이다. 이를 통해 하드웨어 구매없이 더 빠르게 애플리케이션을 개발하고 배포할 수 있다.

EC2 인스턴스 생성하기

순서는 상관 없으나 이러한 것들을 작업해줘야 한다.

  • 서버 이름을 적어준다.

  • AMI를 설정한다

    • AMI, Amazon Machine Image 란 인스턴스를 시작하는 데 필요한 소프트웨어 구성이 포함된 템플릿을 의미한다.
    • 우분투, 리눅스, 윈도우, 레드햇 등 자신이 원하는 OS 및 아키텍쳐를 설정하는 것이 가능하다.
  • 인스턴스 유형을 설정한다.

    • CPU 용량이나 메모리를 설정하는 공간이다. 사용 시간당 요금이 나와있으니 본인이 필요한 만큼 선택한다.
  • 나머지 필요한 세부설정도 있다. 일단은 배포 시도용이기에 이정도만 하고 시작을 누른다.

실행 후 이런 식으로 초록불이 나왔다면 인스턴스가 문제 없이 실행이 된 것이다.

EC2에 Docker 설치하기

EC2 인스턴스를 SSH로 접속하고 싶은 경우, .pem 파일을 이용한다. 리눅스 운영체제의 경우 sudo chmod 400 [.pem] 을 통해 간단하게 파일권한을 할 수 있다.

chmod 400 [.pem]

이후 SSH로 접속하는 명령어는 다음과 같다.

ssh -i [.pem] [ec2 dns address]

성공했다면 이런식으로 새로운 터미널이 나타날 것이다. (이게 EC2 서버의 터미널이다.) ec2 터미널에 도커를 설치해보자.

sudo amazon-linux-extras install docker

그 다음 도커를 실행시켜보자.

sudo service docker start

이후 부터는 실제 우리가 docker 에서 사용했던 명령어를 사용할 수 있다.

EC2 에서 컨테이너 생성하기

크게 두가지로 나누어진다.

  • EC2 에서 직접 이미지를 빌드하기
  • 로컬에서 이미지를 생성하기

전자의 경우, 원격 머신에서 이미지를 빌드하기 까지 복잡한 절차가 많기 때문에, 보통 후자를 많이 사용한다. 특히 도커 허브를 통해 이미지를 올려놓은 후, EC2 에서 해당 이미지를 기반으로 간편하게 컨테이너를 생성할 수 있다.

AWS, 인바운드 & 아웃바운드 룰 설정하기

AWS의 포트에 접근하려면 인바운드, 아웃바운드 룰을 설정해야 한다.

인바운드 룰은 AWS 인스턴스로 들어오는 데이터 트래픽을 제어하는 규칙이다. 인바운드 규칙을 사용하여 특정 IP 주소, 프로토콜 및 포트에서 허용되는 트래픽을 제어할 수 있다. 기본적으로 AWS 생성 시 22 포트만 허용하도록 설정되어 있다. 이를 원하는 설정으로 커스텀하는 경우를 예시로 들자면, HTTP(포트 80) 및 HTTPS(포트 443) 트래픽만 허용하도록 인바운드 규칙을 설정할 수 있다.

아웃바운드 룰은 AWS 인스턴스에서 외부로 나가는 데이터 트래픽을 제어하는 규칙이다. 아웃바운드 규칙을 사용하여 인스턴스에서 허용되는 트래픽을 제어할 수 있다. AWS 생성 시 기본적으로 모든 트래픽을 허용하도록 설정되어 있다.

EC2 배포의 단점

EC2 인스턴스에서 애플리케이션을 배포하는 것은 복잡한 작업일 수 있다. 수동배포의 경우에는 매번 수정된 사항을 반영하여 컨테이너를 새롭게 올려야 하며, CI/CD 의 경우 해당 업무에 전문적인 지식을 갖춘 담당자가 있어야 한다. AWS Elastic Beanstalk 나 AWS ECS 등 관리를 통해 좀 더 쉽게 배포를 하는 방법도 존재한다. 물론 EC2 대비 비용이 크다.

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글