Develop/AWS

[AWS] EC2 인스턴스로 Docker 컨테이너 실행(feat. docker compose)

Gr00t 2021. 2. 13. 14:17

기본 VPC 설정

EC2인스턴스가 가동될 네트워크 환경을 구성하기 위해 기본 VPC 생성한다.

원하는 서브넷이나 게이트웨이 설정이 있다면 VPC를 하나하나 선택해 생성해줘도 상관없다.


인스턴스 생성

인스턴스 종류 선택

Ubuntu Server 20.04 LTS (HVM), SSD Volume Type

지금까지 사용해온 익숙한 환경을 고르도록 한다.

나는 계속 ubuntu를 사용해 연습했으니 ubuntu를 선택했다.

보안 그룹 설정

보안 규칙은 2가지가 필수적으로 요구된다.

  1. SSH : AWS EC2 인스턴스에 원격으로 붙어서 사용하기 위해
  1. HTTP : docker 컨테이너에서 동작할 웹 서버를 위해

위에 2가지는 반드시 추가하고 사용하고 있는 컴퓨터(노트북)만 접속할 수 있도록 소스를 내 PC로 지정해준다.


인스턴스 접속

접속 방법

MobaXterm

MobaXterm의 경우 SSH, SFTP으로 모두 접속이 가능한 프로그램이라 편리하기때문에 사용했다.

Putty, Xshell, Filezilla 등 다른 프로그램을 사용해도 된다.

MobaXterm free Xserver and tabbed SSH client for Windows
Get your ultimate toolbox for remote computing now MobaXterm X server and SSH client MobaXterm is your ultimate toolbox for remote computing. In a single Windows application, it provides loads of functions that are tailored for programmers, webmasters, IT administrators and pretty much all users who need to handle their remote jobs in a more simple fashion.
https://mobaxterm.mobatek.net/

SSH 접속

생성된 인스턴스는 기본적인 ubuntu라 아무것도 깔려있지않다. 따라서 docker를 실행하기위해 SSH로 접속해 CLI환경에서 패키지를 설치해주도록 한다.

Docker 설치 준비 (공식문서링크)

먼저 설치를 위해 패키지 업데이트를 진행한다.

$ sudo apt-get update

다음으로 docker 설치에 필요한 패키지들을 설치해준다.

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

이제 docker 공식 GPG 키를 받아와야한다. 방금 전 설치한 curl을 사용해 키를 받아와 apt-key에 추가해주도록 한다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Docker 설치

docker 설치를 위한 준비는 마쳤다.

이제 docker를 설치하면 된다.

방법은

  • apt-get install을 통해서 하는 방법
  • 쉘 스크립트를 다운받아 실행시키는 방법

이렇게 2가지가 있다. 직접 설치하는 방법은 많이 해봤으니 이번엔 스크립트를 받아 실행해본다.

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

Docker 그룹에 유저 추가(선택사항)

docker 명령은 보통 sudo를 붙여 관리자 권한으로 실행한다. 하지만 docker 그룹에 사용하고 있는 유저이름을 추가해놓으면 sudo를 붙이는 번거로움이 사라진다.

* 명령입력 후 반드시 로그아웃 → 로그인을 해야 적용된다.

$ sudo usermod -aG docker [user_name]

Docker Compose 설치 (공식문서링크)

docker-compose 명령을 실행하기위해 필요한 패키지를 설치한다.

먼저 Docker Compose의 안정된 버전을 다운받는다.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

그리고 실행할 수 있게 실행권한 +x만 주면 된다.

$ sudo chmod +x /usr/local/bin/docker-compose

SFTP 접속

원래대로면 여기서부터 직접 코드를 짜고 파일을 추가하고 그래야했을테지만 이미 앞선 학습을 통해서 Dockerfiledocker-compose.yml도 가지고 있다. 굳이 더 만들지않고 FTP를 사용해 AWS EC2 인스턴스로 전송해주도록 한다.

docker-compose 패키지 폴더 전송

MobaXterm을 사용한 FTP 전송을 통해 모든 파일을 전송했다. 아래 사진을보면 왼쪽이 지금 사용하고 있는 desktop이고 오른쪽이 ubuntu환경임을 알 수 있다. 위쪽에 올라가는 방향으로 초록색 화살표가 있는데 그 아이콘을 누르면 쉽게 ubuntu로 파일을 전송할 수 있다.

(근데 폴더는 안되는 것 같다. 폴더 선택이 안돼서 일일이 폴더를 생성하고 파일을 옮기는 건 귀찮다..)

docker-compose 실행

이제 모든 준비를 마쳤으니 docker-compose up 명령을 통해 서버를 실행시켜보도록 한다.

$ docker-compose up 

컨테이너 동작 확인

docker ps -a명령을 통해 컨테이너가 제대로 동작하고 있는지 확인해본다.

$ docker ps -a
CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                NAMES
a1625ce0a654   asashiho_webserver   "python /opt/imagevi…"   37 minutes ago   Up 37 minutes   0.0.0.0:80->80/tcp   asashiho_webserver_1
d8b12076b8fd   redis:4.0            "docker-entrypoint.s…"   37 minutes ago   Up 37 minutes   6379/tcp             asashiho_redis_1


브라우저 접속

지금까지 잘 따라왔다면 브라우저에 EC2 인스턴스의 퍼블릭 IPv4를 입력했을때 아래와 같이 서버가 동작하는 화면을 볼 수 있다. 👏🏻👏🏻👏🏻

정리

오늘 배운 것을 정리하면

  • AWS EC2 ubuntu 인스턴스 생성
  • 원격 접근을 위한 보안 규칙 및 그룹 설정
  • MobaXterm을 활용해 AWS EC2 인스턴스에 원격으로 접속
  • AWS EC2 인스턴스위에 docker, docker-compose 설치
  • AWS EC2 인스턴스위에서 동작하는 docker 컨테이너로 서버 실행

등이 꽤 여러가지가 있다. 여러번 반복학습을 통해 사용에 익숙해지도록 하자.

'Develop > AWS' 카테고리의 다른 글

[AWS] IAM  (0) 2021.02.28
[AWS] 클라우드 구성 템플릿(CouldFormation Templates)  (0) 2021.02.13
[AWS] Custom AMI  (0) 2021.02.13
[AWS] EC2 인스턴스 생성 및 관리  (0) 2021.02.13
[AWS] VPC 환경 구성과 EC2 인스턴스 생성  (0) 2021.02.13