1. AWS EC2 생성 및 접속
기존 강의에서 진행했던 VULTR 서버 대신 AWS 환경에서 EC2 서비스로 가상 서버를 구동한다. AWS에 회원가입을 하고 EC2에 접속하면 된다. 다만, EC2를 구동하는 동안 비용이 청구될 수 있으니 학습만 하고 EC2를 삭제하는 것이 좋다.
포트
AWS의 EC2의 포트는 막혀있는것이 기본값이다. 따라서 사용을 원하는 포트값을 열어주어야만 한다.
키 페어
aws는 ID/PW 방식 외 키페어 방식을 통해 보안 설정을 한다. 맨 먼저 키 페어를 생성해본다.
OpenSSH 형식을 사용할 것이므로 .pem 형식으로 생성한다. 생성한 키는 다운로드해서 갖고 있어야한다. 다운로드 시에 반드시 사용자 키를 C:\Users\{사용자 이름} 디렉토리에 위치시켜야한다! 아니면 .pem 파일에 대한 접근 권한이 too open 하다는 에러가 발생하면서 EC2 서버에 접근이 불가하게 된다!
에러
내문서(Documents) 위치에 키가 있기 때문이다. C:\Users\chang 으로 이동 후에 정상 작동을 확인하였다.
인스턴스 -> 인스턴스 시작 -> Ubuntu Server 20.04, 프리티어 사용가능으로 선택, 상기 생성하였던 키페어로 인스턴스를 시작한다.
실행 중 인스턴스로 확인 가능하며, 퍼블릭 IPv4 주소로 ssh 접근이 가능하다.
EC2 접속하기
아래 명령어로 접속한다. 물론 ssh가 설치되어있어야한다.
ssh -i {key 이름.pem} ubuntu@{IPv4 주소}
2. aws docker 설치
docker 설치
https://docs.docker.com/engine/install/ubuntu/
링크에서 시키는대로 쭉... 해준다. Set up the repository -> Install Docker Engine을 차례대로 하면된다. 특정 버전을 설치하는 과정은 그냥 넘어가면 된다. 명령어는 복사 후 [마우스 오른쪽 버튼]을 눌러 붙여넣기가 가능하다.
설치 확인
강의대로 그냥 docker 라고 입력해봐도 설치 여부를 알 수 있다.
portainer 설치
https://docs.portainer.io/start/install/server/docker/linux
링크에 나온대로 한다(Docker StandAlone). 다만 사용자가 root가 아니라 ubuntu이기 때문에, 각 명령어 앞에 'sudo'를 붙여줘야 한다. volume을 만들고 Portainer server는 Community Edition으로 한다.
앞서 강의에서 해본대로, docker run... 명령어 중 8000번 포트 부분은 지워준다.(강의 대비 9000 -> 9443 번으로 portainer의 포트가 업데이트 되었다.)
확인
sudo docker container ls
aws 보안 설정으로 포트 open
앞서 설명했던대로 aws의 포트 설정은 막혀있는 것이 default 이므로, portainer로의 접속을 위해서 9443번을 열어주어야한다. 인바운드 규칙에서 22번은 ssh로 접속이 가능하도록 열어준 것인데, 이와 마찬가지로 9443번을 인바운드 규칙에 추가해주면된다.
인스턴스 -> 보안 -> 보안그룹
인바운드 규칙 편집 -> 규칙 추가 -> 사용자 지정 TCP, 9000, 0.0.0.0/0 으로 설정한다. 공식 홈페이지에서 설명하기로, http 접속이 필요하다면 9000번으로 재지정하라고 한다. 9443은 https로만 접근이 가능하다. 강의에서도 9000번 포트로 접속한다.
※ docker container 제거
혹시 9443으로 잘못 생성했다면, 'sudo docker rm {container id}' 명령어로 원래 container를 삭제하고 다시 생성하면 된다. 실행 중인 container라면, 'sudo docker rm -f {container id}' 명령어로 강제 제거를 통해 제거할 수 있다. container id값은 'sudo docker ps' 명령어로 확인할 수 있다.
Swarm 시작하기
마지막으로 secret 등 부가 정보를 제공하기 위해서 swarm을 실행해준다. cmd로 ec2에 접속하여 아래 명령어를 입력한다.
sudo docker swarm init
참조
1. 작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지-박형석님 인프런 강의