Cloud/클라우드

4. [클라우드 서비스] hypervisor 와 docker의 차이점

jinkwon.kim 2019. 2. 24. 12:51
728x90
반응형

4. [클라우드 서비스] hypervisor 단점 그리고 docker와 차이점




1. hypervisor 기반의 단점

  1) 불피요한 기능의 중복

    (1) Host OS와 Guest OS간의 기능 중복

      - 프로세스 스케쥴링

  2) 상대적으로 무겁다 

    - overhead 가 10 ~ 20% 정도 발생

  3) 배치(Deployment)의 어려움

    - 여러개의 가상화 machine을 뛰울 때 어렵다.

2. container 기반 가상화 Docker

  1) Docker의 개념 

    - Build-ship-run

    - H/w 가상화가 아닌 실행 환경의 분리(isolation)

    - 각 container간의 영향을 분리


  2) 성능

    - Overhead가 3 ~ 5% 이내


  3) Docker의 특징

    (1) 동작 OS

      - Linux에 최적화 되어 있습니다.

    (2) 모든 container 들이 동일 OS 커널 공유

      - 독립적인 

    (3) Linux의 특수 기능(LXC)을 사용한 실행 환경 격리를 응용

      - Linux에서만 사용 가능

      - 다른 OS(window/OSX)에서는 경량형 hypervisor가 있어야 합니다.

  * LXC(LinuX Contianer) 

      - LXC 설명 : https://linuxcontainers.org/ko/lxc/introduction/

      - 참고 포스트 : https://doitnow-man.tistory.com/180

    (4) 현재는 LXC->Libcontainer를 사용해 Linux의 의존도를 줄이려고 하고 있습니다. 

    (5) Git과 같은 개념을 image 관리에서 사용

    (6) hypervisor의 OS와 Docker기반의 OS는 동일 하지 않음

    (7) Docker는 GO라는 언어로 되어있음

  4) docker 파일 시스템 (AUFS)

    - 공통되는 파일은 공유하고 다른 부분만 저장하는 파일 시스템 입니다.


  5) hyper visor와 Docker의 차이점

    - hypervisor는 Guest OS가 필요하지만 Docker는 실행 환경 격리 방식 이기때문에 Guest OS가 필요 없습니다.



  

3. Docker Container 구현 기술

  1) LXC

    - linux고유의 기능 입니다

    - 시스템 level의 가상화를 제공

    - chroot(change root)명령에서 발전한 기능 입니다.

    (1) LXC 핵심 기능

      A. cgroup(control groups)

        - linux 자체에 내장 되어 있습니다. 

        - cpu, memory, disk, network 을 provisioning 합니다 .

  * 프로비저닝(provisioning)

           - 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로

             미리 준비해 두는 것을 말한다.

                

      B. namespace(namespace isolation)

        - linux 자체에 내장 되어 있습니다. 

        - 프로세스틀, 사용자계정, 파일시스템, IPC등에 대하여 host와 별개의 공간을 설정 하는 기능 입니다.


  2) Libcontainer

    - OS에서 독립 적이기 위해서 Docker에서 제공하는 Driver 입니다.

    - Libcontainer는 LXC를 대신 할 수 있습니다.

    - docker에서 container list를 봤을 때 native면 libcontainer를 사용하는 container이고 

lxc 리면 LXC를 사용하면 container 입니다.

    - 기본적으로사용 Docker에서 사용 합니다.

4. 번외 설명 LXD

  1) 정의

    - 우분투를 만든 canonoical에서 만든 container solution 입니다.

    - LDX는 Container "Hypervisor" 입니다.

- 우분투 16.04 TLS에 들어가 있다.

  2) 구성 

    - lxd : system-wide daemon 

    - lxc : command line client

    - nova-compute-lxd : OpenStack Nova plugin

    

  3) 기존 LXC와의 차이 점

    - 기존 LXC에 보안 개념을 추가 한 것 입니다. 

    - root가 아니여도 container 생성이 가능 합니다.

    - Docker가 Application Container라면 LDX는 Machine Container 입니다.

      그래서 LDX위에 Docker를 올릴 수 있습니다.

  

  4) 특징 

    - 많은 서버를 뛰울 수 있다.

    - 직관 적이다. 

    - image 기반이다.

    - LXC위에 만든 레이어다. 

    - KVM 보다 빠르다.


  5) 경쟁 기술

    - KVM(Kenel virtual machine) 입니다.

  



728x90
반응형