docker는 container 가상화 기술의 대명사인 회사!
더 자세한 내용은 아래 블로그 참고!
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
For Mac OS :
여기에서 다운 받으면 끝😊 사이트 접속한 김에 회원가입도 해두면 좋다.
https://www.docker.com/get-started
For Ubuntu :
아래 명령어를 한 줄씩 입력한다!
sudo apt update sudo apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" sudo apt update apt-cache policy docker-ce sudo apt install docker-ce
잘 설치 되었는지 확인하고 싶을 때는, docker version
을 입력해보자.
에러가 뜨지 않고 client 와 server의 버전 정보가 출력되면 잘 설치된 것!
(혹시 server 정보가 표시되지 않고 daemon 어쩌구저쩌구 하며 에러가 발생하는 경우에는, 앞에 명령어에 sudo
를 붙여 실행해 볼 것.)
docker login
명령어를 입력한 뒤 유저 네임과 패스워드를 차례로 입력하면 된다.
준비물 : gunicorin이 포함된 requirements.txt
gunicorn은 pip install gunicorn
명령어로 설치 할 수 있으며,
requirements.txt 를 만드는 방법은 pip freeze 포스팅을 참고하여, name을 requirements로 만들면 된다.
Docker로 배포할 프로젝트의 manage.py가 있는 디렉토리에 requirements.txt를 준비한 뒤,
vi Dockerfile
로 확장자가 없는 Dockerfile을 만든다.
아래 내용을 넣어주고 저장하면 끝. (제일 마지막줄 '프로젝트 이름' 배포할 프로젝트 이름으로 변경해야하며, 주석처리된 부분은 삭제해도 무방하다.)
#./Dockerfile
FROM python:3
#기반이 될 이미지
WORKDIR /usr/src/app
# 작업디렉토리(default)설정
## Install packages
COPY requirements.txt ./
#현재 패키지 설치 정보를 도커 이미지에 복사
RUN pip install -r requirements.txt
#설치정보를 읽어 들여서 패키지를 설치
## Copy all src files
COPY . .
#현재경로에 존재하는 모든 소스파일을 이미지에 복사
## Run the application on the port 8080
EXPOSE 8000
#8000번 포트를 외부에 개방하도록 설정
#CMD ["python", "./setup.py", "runserver", "--host=0.0.0.0", "-p 8080"]
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "'프로젝트이름'.wsgi:application"]
#gunicorn을 사용해서 서버를 실행
마지막으로 아래 명령어를 입력하면 작성한 Dockerfile을 사용해 이미지가 빌드된다.
❗️Ubuntu에서는 모든 명령어 앞에 sudo
를 붙이는 것을 잊지 말자.
docker build -t '가입한 도커 계정 이름'/'프로젝트 이름(이미지 이름)':'버전' . ex) docker build -t kay/my_project:0.1 .
버전 다음에 찍는 점 (.)은 현재 디렉토리에 있는 Dockerfile을 사용하겠다는 의미.
sudo docker run --name '컨테이너 이름' -d(지속적으로 실행하기 위한 옵션) -p(포트포워딩 로컬:도커)8000:8000 kay/my_project:0.1 ex)sudo docker run --name my_project01 -d -p 8000:8000 kay/my_project:0.1
docker ps
현재 실행되고 있는 컨테이너 목록
docker ps -a
종료된 컨테이너 까지 포함한 모든 컨테이너 목록 확인
docker stop 컨테이너 이름
실행 중인 컨테이너를 중단
docker start 컨테이너 이름
중단 된 컨테이너 다시 실행
docker rm 컨테이너 이름
불필요한 컨테이너를 삭제
Docker에도 Git의 remote repository와 같은 개념의 원격 저장소가 존재하여 이미지를 보관할 수 있다.
아래 명령어로 푸시하면 끝.
단, 푸시한 이미지는 퍼블릭에 공개되며 기본계정에서는 프라이빗 레포지토리를 하나만 가질 수 있으니 주의!
docker push '가입한 도커 계정 이름'/'프로젝트 이름(이미지 이름)':'버전' ex) docker push kay/my_project:0.1
참고 :
Wecode Docker 세션 자료
https://velog.io/@devmin/Docker-deployment
https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html
https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html
https://subicura.com/2017/02/10/docker-guide-for-beginners-create-image-and-deploy.html