컨테이너 가상화 시스템 Docker

isTuna·2021년 2월 4일
2

🐋 Docker란?

Docker은 가상화 기술입니다. Container VirtualizationDocker라는 회사가 개발하기 전에도 존재했었습니다. Docker가 가상화 컨테이너에 application 배포를 자동화 시켜주는 오픈소스 엔진으로 많은 기업들이 사용해서 저처럼 기술의 또 다른 이름으로 오해하시는 분들도 있습니다. 오늘은 Docker의 요소들을 소개하고, Django 프로젝트를 배포해보겠습니다.

🖼 Image

ImageDockerLifeCycle에서 Build의 부분에 해당합니다. 컨테이너에서 실행시키고 싶은 applicationdocker 이미지로 빌드해서 실행시킵니다.

Image는 파일시스템들의 layer로 만들어졌습니다. 또한 컨테이너를 실행시키기 위해 필요로 한 파일들과 설정값을 포함하고 있습니다. 이러한 설정값들은 수정할 수 없게 되어있습니다. 컨테이너의 상태가 변경되거나 삭제되어도 이미지는 변하지 않습니다.

🚀 Deploy Django Project

Dokerfile

Image를 만들기 위해서는 우선 Dockerfile을 만들어야한다. Dockerfile에는 설정 파일로 안에 다양한 명령어들이 들어있습니다. DockerfileDocker 배포의 기본입니다.

Dockerfile 예시

#./Dockerfile
FROM python:3 
#기반이 될 이미지

# 작업디렉토리(default)설정
WORKDIR /usr/src/app 

## Install packages
#현재 패키지 설치 정보를 도커 이미지에 복사
COPY requirements.txt ./ 
#설치정보를 읽어 들여서 패키지를 설치
RUN pip install -r requirements.txt

## Copy all src files
#현재경로에 존재하는 모든 소스파일을 이미지에 복사
COPY . . 


## Run the application on the port 8080
#8000번 포트를 외부에 개방하도록 설정
EXPOSE 8000   


#CMD ["python", "./setup.py", "runserver", "--host=0.0.0.0", "-p 8080"]
#gunicorn을 사용해서 서버를 실행
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "bestgo.wsgi:application"]  

Docker build

Image를 만들기 위해서는 build 명령어를 써야합니다.

$ docker build -t {docker_id}/{이미지 이름}:0.1

Build 과정에서 Dockerfile을 찾지 못하는 경우가 있습니다. 그 경우에는 directory가 맞는지와 Dockerfile에 확장자가 부여됬는지 확인해보세요.

Dockerfile.txt => .txt 파일이면 build가 되지 않습니다.

Build가 되었으면 $ docker images 명령어로 제대로 만들어졌는지 확인해볼 수 있습니다.

Docker push

Docker Image를 이제 Docker HubPush해야 합니다. Push된 이미지는 나중에 EC2에서 Pull하면 됩니다.

Docker run

Docker ImageEC2에서 pull 했다면 이제는 실행시켜주어야 합니다. Run 명령어는 아래와 같은 구조입니다.

$ docker run -d -p 8000:8000 --name best_go_test jun17114/bestgo:0.1

-d

-d 옵션을 사용하면 컨테이너가 detached mode로 실행됩니다. 컨테이너가 백그라운드에서 실행됩니다.

-p

-p는 포트포워딩입니다. 호스트에 연결된 컨테이너의 특정 포트를 외부에 노출시킵니다.

--name

--name 뒤에 실행될 컨테이너의 이름을 정해줍니다.


profile
청소연구소 개발자 (2021. 05~ )

0개의 댓글