Docker

[Docker] Ubuntu 기반 AWS EC2 인스턴스에 Docker 및 Docker Compose 구축 및 실행

J_Dev 2024. 11. 14. 23:00
  • 이번 포스트에서는 Ubuntu 기반 AWS EC2 인스턴스에 Docker와 Docker Compose 환경을 설정해 보겠습니다.
  • GUI 기반 Windows와 달리 Ubuntu와 같은 Linux 기반 OS는 명령줄 인터페이스(CLI) 를 통해 작업해야 하므로, 익숙하지 않은 사용자에게는 다소 불편하게 느껴질 수 있습니다.

1. EC2 인스턴스 생성

1) AMI

  • EC2 대시보드에서 AMI 선택 시 "Quick Start" 탭에 들어가 Ubuntu Server를 선택합니다. 보통 최신 LTS(Long Term Support) 버전이 추천되며, 여기서는 별도로 설정을 변경하지 않고 기본값을 유지합니다.

2) 인스턴스유형, 키페어

  • 인스턴스 유형 : 인스턴스 유형에서 t2.micro 또는 t3.micro와 같이 "프리티어(무료 사용 가능)"로 표시된 것을 선택합니다.
  • 키페어 : 인스턴스에 SSH를 통해 접근할 때 필요한 인증키입니다. 새 키 페어를 생성한 후 .pem 파일을 다운로드합니다. 이 파일은 반드시 안전한 곳에 보관해야 하며, 인스턴스에 연결할 때 필요합니다.

3) 네트워크 설정

  • VPC : 퍼블릭 서브넷을 포함하고 있는 VPC(Virtual Private Cloud)를 선택합니다. 일반적으로 AWS에서는 기본 VPC가 있으며, 여기에 퍼블릭 서브넷을 지정합니다..
  • 서브넷 : 퍼블릭 서브넷을 선택합니다. 이 서브넷에는 인터넷 게이트웨이가 연결되어 있어 외부에서 인스턴스에 접근할 수 있습니다.
  • 퍼블릭 IP 자동 할당 : 인스턴스가 외부에서 접근될 수 있도록 퍼블릭 IP 자동 할당을 활성화합니다.
  • 보안그룹 : 새로생성하거나 기존에 있던 보안그룹을 선택합니다. 중요한건 SSH(22번포트) 가 열려있어야 하며 소스유형은 내 IP로 제한하여 타 IP에서 접근을 차단해야 합니다.

4). 인스턴스 생성

  • 모든 설정이 완료되면 인스턴스를 생성합니다. 생성이 완료되면 인스턴스의 퍼블릭 IP 주소를 확인할 수 있습니다. 이 주소는 인스턴스에 SSH로 접근할 때 필요합니다.

2. EC2 인스턴스 접속.

1) tabby 터미널 설치

  • Tabby는 다기능 터미널 에뮬레이터로, SSH 클라이언트 기능도 제공해 쉽게 EC2에 접속할 수 있습니다. Tabby 공식 웹사이트에서 설치 파일을 다운로드하고 설치합니다.

2) SSH 연결로 EC2 접속

  • tabby 터미널에서 추가 버튼 클릭 SSH 연결을 클릭합니다.

  • 호스트 :EC2의 퍼블릭 IPv4 DNS를 입력해줍니다. 포트는 22로 설정해줍니다
  • 사용자이름 : Ubuntu 인스턴스는 기본값으로 ubuntu 사용자가 할당됩니다.
  • 인증방법 : 키 를 선택하고 EC2 생성시 다운받은 .pem 파일을 추가합니다.

  • 접속이 성공적으로 이루어지면 위 화면과같이 뜹니다.

3. Docker 설치

  • 여기서부터는 명령어 위주로 설명하겠습니다.
  • 자세한 내용은 도커 공식문서 를 참고해주세요

1) 필수 패키지 설치

  • Docker 설치에 필요한 패키지를 먼저 설치합니다
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
  • 각 패키지의 역할:
    • ca-certificates: HTTPS 인증서를 검증하여 보안 연결을 가능하게 함, Docker 공식 리포지토리에서 패키지 다운받을때 사
    • curl: 파일 다운로드 및 서버와 데이터 통신을 가능하게 함, GPG 키 다운로드할때 사
    • gnupg: 데이터 암호화와 서명을 지원
    • lsb-release: 시스템의 배포판 정보를 확인

2) Docker의 GPG 키 다운로드

  • 디렉터리 생성 : Docker GPG 키를 다운로드 받을 디렉터리를 생성해줍니다.
sudo mkdir -p /etc/apt/keyrings
  • Docker의 공식 GPG 키를 다운로드하고, 이를 APT에서 사용할 수 있는 형식으로 변환해 /etc/apt/keyrings/docker.gpg 파일에 저장합니다
  • GPG 키는 패키지의 출처를 검증하는 역할을 합니다. Docker 저장소에서 제공하는 패키지가 신뢰할 수 있는지 확인하는 데 사용됩니다.
  • -dearmor 옵션은 GPG 키를 바이너리 형식으로 변환하여 저장하는 옵션입니다.
  • GPG키 다운로드
  • sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc

3) Docker 리포지토리 추가 추가

  • Docker 패키지들을 설치할 수 있도록 Docker 공식 저장소를 APT 소스에 추가합니다.
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4). Docker 설치

  • Docker 엔진 및 관련 패키지를 설치합니다.
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 각 패키지의 역할:
    • docker-ce: Docker Community Edition
    • docker-ce-cli: Docker CLI
    • containerd.io: 컨테이너 실행 및 관리 시스템
    • docker-buildx-plugin: 고급 빌드 기능 제공
    • docker-compose-plugin: Docker Compose 기능 지원

4. Docker Compose 설치

  • Docker Compose는 Docker가 정상적으로 설치되어야 작동합니다.

1) Docker Compose 설치

  • 최신 버전의 Docker Compose를 다운로드하여 /usr/local/bin/docker-compose에 설치합니다.
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2). 실행 권한 부여

  • 설치된 Docker Compose에 실행 권한을 부여합니다.
sudo chmod +x /usr/local/bin/docker-compose
  • 명령어의 세부 사항
    • chmod: 파일의 권한을 변경하는 명령어입니다.
    • +x: 실행 권한을 추가합니다. 이후에 이 파일을 프로그램처럼 실행할 수 있게 됩니다.
    • /usr/local/bin/docker-compose: 권한을 변경할 파일의 경로를 지정합니다

3). 설치 확인

  • Docker Compose가 정상적으로 설치되었는지 확인합니다.
docker-compose --version


5. Docker Compose Build

1) 작업 디렉토리 생성

  • Docker Compose 파일을 만들 디렉토리를 생성하고 해당 디렉토리로 이동합니다.
mkdir ~/myapp
cd ~/myapp

2) docker-compose.yml 파일 작성

  • 예를 들어 Redis 컨테이너를 실행할 수 있도록 docker-compose.yml 파일을 작성합니다.
  • nano로 파일을 열어 내용을 입력하고 저장합니다.
nano docker-compose.yml

  • 작성후 ctrl + o 작성완료 후 enter 키를 눌러 저장합니다.
  • ctrl + x 로 nano 에서 빠져나옵니다.

3). Docker Compose 빌드 및 실행

sudo docker-compose up --build -d
  • docker-compose.yml 파일을 기준으로 컨테이너를 빌드한 후 백그라운드에서 실행합니다.
  • - d 옵션은 백그라운드 모드로 실행하는 옵션입니다..


6. 결론

  • 오늘은 Ubuntu 기반 EC2 인스턴스에서 Docker 및 Docker Compose 환경을 구축하고 실행해 보았습니다.
  • 이 과정을 통해 Docker와 Docker Compose가 어떻게 컨테이너 환경에서 빠르고 효율적인 배포를 가능하게 하는지 경험할 수 있었습니다.