ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DevOps] Docker란 무엇인가?
    DevOps 2021. 12. 30. 21:52

    1. Docker란?

    Spring 개발을 해오면서 Docker를 이용한 프로젝트 배포에 흥미를 느껴, Docker에 대하여 공부하였습니다.

    위키에서 정의한 도커는...

    • 도커는 리눅스의 응용 프로그램들을 프로세스 격리 기술들을 사용해 컨테이너로 실행하고 관리하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을 인용하면 다음과 같다: 도커 컨테이너는 일종의 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싼다. 

    요약하면, 도커는 리눅스 기반의 기술을 이용해 프로그램을 컨테이너로 관리, 실행하는 오픈소스 가상화 플랫폼입니다.

    도커를 이해할려면 어떤 리눅스 기술을 이용하는지 알아볼 필요가 있습니다.

     

    2. Docker 기반 기술 :  cgroups & namespaces

    리눅스는 시스템 리소스가 파일로 구성되어있으며, 이는 리눅스 커널이 제공하는 cgroups와 namespaces 기능을 이용하여 각 프로세스를 격리하는 기능을 제공하고 있습니다.

     

    2-1. 리눅스 네임스페이스(namespace)

    각각 컨테이너에서 실행된 프로세스가 시스템(user, 파일, 네트워크, 호스트명, 프로세스 등)에 대해서 독립되어 볼 수 있도록 구현해 줍니다.

     

    2-2. 리눅스 cgroups

    리눅스의 cgroups를 사용해 각각의 컨테이너(프로세스)가 사용할 수 있는 시스템 리소스(CPU, 메모리, network bandwidth)를 제한해 준다. cgroups으로 리소스 사용이 제한된 각 컨테이너는 다른 컨테이너에게 예약된 리소스를 사용할 수 없다. 이는 해당 프로세스가 별도의 OS에서 실행될 때와 비슷한 효과를 줄 수 있습니다.

     

    현재 Docker 0.9버전 부터는 직접 개발한 libcontainer 컨테이너를 사용하고 있습니다!

     

    3. SpringBoot와 Vue 프로젝트를 도커로 배포하기.

    실습 환경은 Windows 10에 WSL2를 적용시켜 구성하였습니다.

    해당 실습 환경을 구성하는 방법은 아래 링크를 참고 부탁드리겠습니다.

    https://www.lainyzine.com/ko/article/a-complete-guide-to-how-to-install-docker-desktop-on-windows-10/

     

    [Windows 10] Docker 설치 완벽 가이드(Home 포함)

    Docker는 경량 가상화 기술인 리눅스 컨테이너 도구입니다. Windows 10 Home과 Pro에서도 몇 가지 설정을 통해 Docker Desktop으로 리눅스 컨테이너를 사용할 수 있습니다. 이 글에서는 Windows 10에서 Docker Des

    www.lainyzine.com

    3-1. Vue를 도커로 배포하기.

     (1) Dockerfile 작성.

    Visual Studio Code의 Dockerfile 작성툴을 이용하여 다음과 같이 작성해 주었습니다.

    ※특이사항 : DockerFile의 CMD 인자에 -p 5500로 작성하여야 실제 5500포트로 포트포워딩이 실행됨.

       -docker run -p 5500:5500 설정하여 실행하여도 자동으로 8080포트로 연결되어 위와 같이 해결하였다.

     

     (2) DockerFIle 빌드

    해당 Vue 프로젝트의 루트폴더에서

     docker build . -t front:0.1

    태그(-t)를 front:0.1로 정의하여 도커 이미지를 빌드합니다.

     

     (3) 그 후 해당 태그네임으로 도커 이미지를 실행하면 끝!

    docker run -it -p 5500:5500 --rm front:0.1

     

    3-2. SpringBoot를 도커로 배포하기.

     (1) SpringBoot 프로젝트 빌드.

    mvnw package
    java -jar target\myProject-0.0.1-SNAPSHOT.war

    maven wrapper 를 이용하여 war로 프로젝트를 빌드하는 예시

    project\build\libs 파일 내부에 빌드된 war파일을 확인할 수 있습니다.

     

     (2) Dockerfile 작성.

    ※특이사항 : springBoot의 gradle을 이용하여 war파일을 빌드 하였으므로, Dockerfile 빌드 경로에 war파일을 지정해야한다.

       -entrypoint -jar 옵션은 동일. 실행은 실제 개발과 다르게 해당 war파일을 실행시키면된다. 실제 개발에서는 tomcat 컴포넌트를 등록하여 해당 tomcat에 jar파일을 넘겨주는 방식으로 개발.

     

     (3) 해당 도커 이미지 실행.

    docker run -it -p 8080:8080 -rm back:0.1

    해당 포트로 SpringBoot 컨테이너가 잘 동작됩니다..!

Designed by Tistory.