Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • BUILD / SHIP / RUN
  • 빌드와 배포 실행하기 위한 환경을 쉽게 제공해줌.

Image RemovedImage Added


기존의 가상화와 다른개념

  • 하드웨어 가상화가 아닌 실행환경의 분리(isolation)
  • 각 컨테이너간 영향을 분리
  • 게스트 OS가 없음
  • 예) mysql을 설치한다고 했을때, 1번컨테이너에서 설치시 2번 컨테이너에서 사용불가

Image RemovedImage Added


도커의 성능

  • 오버헤드가 5%이내
  • network 정식버전은 0.97~0.98로 2~3%의 오버헤드

Image RemovedImage Added


도커의 특징

  • 모든 컨테이너들이 동일 OS커널 공유 (Linux only)
    • 독립적인 스케줄링이나 CPU/메모리/디스크/네트워크를 가상화 하지 않음
  • 리눅스의 특수 기능(LXC : 리눅스컨테이너)을 사용한 실행환경 격리를 응용
    • 처음에는 우분투에서 현재 리눅스 배포판 (fedora, RHEL. contos, ...) 에서 사용가능
    • 다른 OS (윈도우/OSX)에서는 일반 하이퍼바이저(경량)가 있어야함
    • 현재는 LXC → Libcontainer를 사용해 리눅스 의존도를 줄이려 하고 있음 (다른OS에서도 사용가능하게...)
  • 시스템의 분리에는 Linux Containers (LXC)를 - (컨테이너 독립개념)
  • 파일시스템은 Advenced multi layered unification filesystem (Aufs)를 사용
    • 우분투와 데비안(계열이 비슷한 OS) 두 이미지를 동시에 만들경우 공통부분은 공유하고, 차이나는 부분만 별도 나누어서 관리 하는 파일시스템
  • 그리고 Git 같 은은 이미지 버전컨트롤 시스템 도입

Image RemovedImage Added

  • 리눅스 컨테이너 가상화 (LXC)기반
  • 2014/6/.10 출시
  • 구글과 같은 메이저 벤더들에 빠른 속도롤 채택
  • 현재 사실상의 표준 (de facto standard)이 됨
  • 하이퍼바이저와 달리 게스트OS란 계층이 없기 때문에 더 가볍고, 빠른 성능이 남
  • 하이퍼바이저 기반의 우분투와 도커 기반의 우분투가 실제 설정 / 사용하는 방식이 상이
    • 환경변수 설정, 서비스 수행방식, ...
  • 구글에서 만든 Go라는 언어로 작성
  • DotCloud
    • PaaS 공급업체 DotCloud가 PaaS의 벡엔드로 사용하는 컨테이너 기반의 가상화 소프트웨어를 오픈소스로 공개
    • 현재 도커(Docker Inc.)로 회사명 변경
  • Docker는 하나의 Linux시스템에 여러 Linux시스템 운영을 위한 소프트웨어

...

  • Linux Container
  • 시스템레벨 가상화
  • cgroups (control groups)
    • CPU,  메모리, 디스크, 네트워크 => (provisioning 자원을 할당받고 관리하는 기능 - 리눅스자체내장기능)
  • Namespaces (Namespace Isolation)
    • 프로세스트리, 사용자계정, 파일스스템, IPC, ...
    • 호스트와 별개의 공간설정
  • chroot (change root) 명령어에서 발전
    • chroot jail
    • chroot 상의 폴더에서 외부 디렉토리 접근 안됨


Image RemovedImage Added


Libcontainer

  • 컨테이너 최적화 기술 LXC외에 리브컨테이너(libcontainer)란 별도의 실행 드라이버 (execdriver)를 만들어, 특정 우분투 버전외에 다양한 리눅스를 지원 가능
  • 맥OS나 윈도에서도 사용할 수 있는 가능성 생김
  • native (libcontaier), lxc (LXC)
    • native라면 libcontainer를 사용해 생성한 container
    • lxc라면 LXC를 사용해 생성한 container

...

  • 도커 =
    • LXC (cgroups+namespaces) or libcontainer +
    • AUFS (Advanced multi layered unification filesystem) +
    • 이미지, 컨테이너 생성관리 +
    • 각종 부가기능

Image RemovedImage Added


LXD

  • 우분투를 만든 캐노니컬(canonical)에서 만든 컨테이너 솔루션
  • 기존의 LXC에 보안 개념까지 추가
    • Secure by default
    • Unprivileged container
      • root가 아니어도 컨테이너 생성 가능
  • 도커와 LXD는 경쟁관계인가? 
    • 둘의 기술은 공유하는 기술이다.
  • 도커는 Application Container, LXD는 Machine Container
    • LXD위에 도커를 돌리는게 가능하다.
  • LXD는 Contaier "Hypervisor"
  • 경쟁기술이라기 보다는 보완관계(도커와 병행 가능)
    • KVM (Kernel Virtual Machine)을 경쟁기술로 간주

...