VM ware : host OS (ex: mac OS, Linux etc..) 위에 똑같은 os를 만들기(하이퍼바이저) 때문에 무겁고 느리다.
도커(컨테이너) : 하이퍼바이저가 없기때문에 가볍고 빠르다.
내 코드를 이미지화 하고 다른사람이 깃헙에서 clone 받듯이 나의 코드 이미지를 클론 받으면 내 서버에서 돌아가는 것과 똑같이 돌아간다.
이미지 파일을 잘 가지고 있으면 재사용 가능 (확장성이 유연함)
컨테이너는 영원하지 않다. 단일 프로세스로서 동작하고, 프로세서의 작업이 종료되면 컨테이너도 종료 된다. 마치, 음악 재생이 모두 끝나면 종료되는 것과 마찬가지이다.
컨테이너 자체는 격리된 환경이기 때문에 conda(가상환경)을 따로 설치할 필요 없다.
docker ps : 실행중인 컨테이너를 보여주는 커맨드
docker ps -a : 실행이 종료된 것을 포함해서 모든 컨테이너를 보는 커맨드 및 옵션
docker images : 생성된 혹은 다운로드 된 이미지를 보여주는 커맨드
docker build -t '도커 허브에 가입한 계정명/ 이미지명(프로젝트명 권장)':버전'. : 도커 이미지를 빌드하는 명령어 도커파일 사용
docker run --name '컨테이너 명''이미지 명' : 도커 컨테이너를 실행하는 명령어 완성된 이미지를 사용
docker run -it '이미지 명' /bin/bash : 도커 컨테이너를 실행시킴과 동시에 컨테이너에 접속해서 쉘을 실행시키는 명령어
my_settings.py에 'NAME' : '데이터베이스명', 'HOST' : RDS 엔드포인트 주소 넣어주기
(RDS에 my_settings.py에 들어간 데이터 베이스명이 생성되어 있어야 겠쥬?)
source setting_up.sh 실행하기 (지훈님이 배포해주신 파일,세팅 부터 runserver까지 한번에!) 잘 실행 된다면 서버를 꺼도 좋다!
-d 는 데몬을 의미한다. 데몬을 활용해서 컨테이너가 계속 유지될 수 있게 도와준다.
-p 는 포트를 의미한다. 포트포워딩을 의미한다. host OS port 8000번과 컨테이너의 포트 8000번을 연결해준다.
--name 뒤에 docker_train은 컨테이너의 이름을 의미(내가 아무렇게나 지을 수 있다)하며
그 뒤는 어떤 이미지를 컨테이너에 담을지 적는 것이다.
7-1. docker exec -it 컨테이너명 /bin/bash를 통해 컨테이너를 직접 들어가볼수도 있다.
컨테이너 runserver를 끌 때 :docker stop 컨테이너 ID
컨테이너 자체를 지워버리고 싶을 때 :docker rm 컨테이너 ID
image를 지우고 싶을 때 :docker rmi 이미지 ID
my_settings.py에 RDS와 연결시켜놓기
'NAME' : '데이터베이스명', 'HOST' : RDS 엔드포인트 주소 넣어주기
이미지화 하려면 무조건 Dockerfile 넣어놓기
내 host OS에서 프로젝트 이미지화 시키기
docker build -t '도커 허브에 가입한 계정명/ 이미지명(프로젝트명 권장)':버전'.
도커 레포에 push 하기
docker push '도커 허브에 가입한 계정명/ 이미지명(프로젝트명 권장)':버전'
EC2 서버 접속해서 pull 받기
sudo docker pull '도커 허브에 가입한 계정명/ 이미지명(프로젝트명 권장)':버전'
컨테이너를 만든 후 런서버 돌리기
sudo docker run -d -p 8000:8000 --name 프로젝트명 '도커 허브에 가입한 계정명/ 이미지명(프로젝트명 권장)':버전'
배포 완료~!! 아이피 주소는 EC2 Public IP 주소를 알려주면 된다!