[AWS, Docker] aws ec2 instance에 docker, mysql 설치하기

Coastby·2022년 10월 10일
0

LIKELION Back-End School

목록 보기
35/61
post-custom-banner

AWS 인스턴스 준비

AWS에서 EC2 instance를 만든다. instance는 실습용이니 spot instance로 설정한다.

💡 AWS를 쓰는 동안은 결제 대시보드를 자주 확인하자.

○ EC2 instance 생성 및 접속하기

  • 인스턴스 유형 : 필요에 따라 OS, CPU, 메모리 등을 선택한다. 이번에는 ubuntu 22.04, t3 small을 선택하였다.
  • 키페어 : 있는 것 사용해도 되고, 없으면 만들어도 된다. 어디에 저장했는지만 기억한다.
  • 네트워크 설정 : SSH, HTTPS, HTTP 모두 선택하였다.
  • 고급 세부 정보 : 스팟 인스턴스 요청

💡 Spot instance란?

스팟 인스턴스는 온디맨드 가격보다 저렴한 비용으로 제공되는 예비 EC2 용량을 사용하는 인스턴스이다. 스팟 인스턴스의 시간당 가격을 스팟 가격이라고 한다. 그리고 스팟 가격은 스팟 인스턴스의 장기적 공급 및 수요에 따라 점진적으로 조정된다. 또한 용량을 사용할 수 있을 때마다 스팟 인스턴스가 실행된다.
스팟 인스턴스는 사용자 제시 가격 (입찰가격)을 정해놓고 저렴할 때 이용할 수 있다. 사용자가 제시한 가격보다 인스턴스 시장 가격이 높아지게 되면 인스턴스가 종료된다. 종료 되는 시점은 알 수 없다.
스팟 인스턴스는 애플리케니션이 실행되는 시간을 유연하게 조정할 수 있고, 애플리케이션을 중단할 수 있는 경우에 선택하는 비용 효율적인 방법이다. 예) 데이터 분석, 배치 작업, 백그라운드 프로세싱 및 선택적 작업 등


EC2에 접속하기

이전 블로그 참고 : https://velog.io/@coastby/5주차웹개발-개발일지-서버에-올리기

SSH (Secure SHell protocol)
다른 컴퓨터에 접속할 때 쓰는 프로그램. 다른 것들보다 보안이 상대적으로 뛰어나다.
접속할 컴퓨터가 22번 포트가 열려있어야 접속가능하다. AWS EC2의 경우, 이미 22번 포트가 열려있다.

나의 keypair 접근 권한 바꿔주기

sudo chmod 400 받은키페어를끌어다놓기 

ssh로 EC2에 접속하기

ssh -i 받은키페어를끌어다놓기 ubuntu@[퍼블릭 IPv4 DNS]

💡 연결하는 방법이 헷갈리면 참고
인스턴스 요약 페이지의 우측 상단에 연결 버튼을 클릭한다.

SSH 클라이언트 탭 클릭한다. terminal에서 3번 4번 실행한다.

# 간단한 리눅스 명령어
ls: 내 위치의 모든 파일을 보여준다. (list)

pwd: 내 위치(폴더의 경로)를 알려준다.

mkdir: 내 위치 아래에 폴더를 하나 만든다. (make directory)

cd [디렉토리]: 나를 [디렉토리]로 이동시킨다. (change directory)

cd .. : 나를 상위 폴더로 이동시킨다.

cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기

rm -rf [지울 것]: 지우기

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다. (superduser do)
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)

chmod : 파일 또는 폴터의 권한을 변경할 때 사용 (change mode)

Docker 설치하기

  • EC2에 접속하여 관리자 권한으로 변경한다. 아래 명령어를 입력하면 아래 사진과 같이 바뀐다.
sudo su -

도커 홈페이지에서 받을 수도 있지만 도커 설치 스크립트를 github에서 받아서 실행한다.

  • github에서 스크립트 받아오기
    git clone https://github.com/Kyeongrok/docker_minikube_kubectl_install.git
  • ll : 디렉토리 목록 확인하여 clone 되었는지 확인한다.
    # ll
    total 28
    drwx------  5 root root 4096 Oct  9 07:12 ./
    drwxr-xr-x 19 root root 4096 Oct  9 06:50 ../
    -rw-r--r--  1 root root 3106 Oct 15  2021 .bashrc
    -rw-r--r--  1 root root  161 Jul  9  2019 .profile
    drwx------  2 root root 4096 Oct  9 06:50 .ssh/
    drwxr-xr-x  3 root root 4096 Oct  9 07:12 docker_minikube_kubectl_install/
    drwx------  4 root root 4096 Oct  9 06:50 snap/
  • 해당 디렉토리에 들어가서 docker_install.sh 실행한다.
    # cd docker_minikube_kubectl_install/
    # ll
    total 56
    drwxr-xr-x 3 root root 4096 Oct  9 07:12 ./
    drwx------ 5 root root 4096 Oct  9 07:12 ../
    drwxr-xr-x 8 root root 4096 Oct  9 07:12 .git/
    -rw-r--r-- 1 root root   48 Oct  9 07:12 add_k_bashrc.sh
    -rw-r--r-- 1 root root  703 Oct  9 07:12 argocd.sh
    -rw-r--r-- 1 root root  421 Oct  9 07:12 docker_install.sh
    -rw-r--r-- 1 root root  236 Oct  9 07:12 k_shortcut.sh
    -rw-r--r-- 1 root root 2435 Oct  9 07:12 kubeadm_install.sh
    -rw-r--r-- 1 root root 2572 Oct  9 07:12 kubeadm_readme.md
    -rw-r--r-- 1 root root 1037 Oct  9 07:12 kubeadm_worker_install.sh
    -rw-r--r-- 1 root root  327 Oct  9 07:12 kubectl_install.sh
    -rw-r--r-- 1 root root  408 Oct  9 07:12 minikube_install.sh
    -rw-r--r-- 1 root root  989 Oct  9 07:12 readme.md
    -rw-r--r-- 1 root root  186 Oct  9 07:12 utils.sh
    # sh docker_install.sh
    ...
    Press [ENTER] to continue or Ctrl-c to cancel.      #엔터 누름
  • 도커가 정상적으로 설치되었는지 확인한다. 아래 명령어를 입력하면 도커 명령어들이 나온다.
# docker

nginx 설치하기

💡 nginx
가벼운 고성능 웹서버로 높은 트래픽 처리를 위해 만들어졌다. Apache의 경우 접속마다 Process 또는 Thread를 생성하는 구조로, 다수가 동시접속을 하면 그 만큼 생성비용이 든다. 하지만 nginx는 한 개 또는 고정된 프로세스만 생성하고, 그 프로세스 내에서 비동기 방식으로 효육적으로 작업을 처리한다.

도커를 이용하여 nginx를 설치하고 실행시킨다.
80포트를 80포트로 받아서 연결해서 띄워준다.

# docker run -p 80:80 nginx

제대로 실행되는 지 확인하려면 AWS EC2 인스턴스에서 [dns주소]:80으로 접속하면 아래 사진과 같이 화면이 나타난다.

#주소
ec2-3-34-41-88.ap-northeast-2.compute.amazonaws.com:80

mysql 서버 구축하기

EC2에 접속하여 관리자 권한으로 설정한다.

# sudo su -

아래의 명령로 docker를 통해 mysql을 설치할 수 있다.

  • -p : 포트포워딩 [호스트:컨테이너] 호스트의 3306포트와 컨테이너의 3306포트를 연결
  • -e : 컨테이너 내에서 사용할 환경변수 설정
    • MYSQL_ROOT_PASSWORD=password : root 계정의 비밀번호 설정
    • -d : detached 모드, 데몬 모드라고 부르며 컨테이너가 백그라운드로 실행된다.
# docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=password mysql

에러 발생 (unsolved)

설치 후 위의 화면에서 나가지를 못하였다. 로그 화면처럼 보이는데 검색해도 알 수가 없어서 terminal을 종료하고 다시 들어가니 정상작동 되었다.

mysql이 실행 중인지 확인하는 방법은 아래 명령어를 입력 후 image에 mysql이 띄워져있는지 확인한다.

#docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
f6a7d40856fb   mysql     "docker-entrypoint.s…"   36 minutes ago   Up 36 minutes   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   busy_clarke
profile
훈이야 화이팅
post-custom-banner

0개의 댓글