티스토리 뷰

Container & K8S & Automation/Docker

Docker 개념

승어리(Won) 2019. 1. 16. 09:37

Docker와 Hypervisor 기반 기술과의 비교



먼저 Docker는 하나의 Linux 시스템에 여러 Linux 시스템 운영을 위한 소프트웨어이다.



Docker와 같은 컨테이너 기반 가상화 기술이 아직까지 리눅스 계열만 지원하는데 비해 Hypervisor는 다양한 기술을 지원하는 장점이 있다.



▷Docker는 실행환경의 격리를 통한 낮은 오버헤드와 편리한 배포 매커니즘을 가지고 있지만 윈도우와 같은 OS를 지원하지 못하는 단점이 있다.




* 가상화의 단점


1) 불필요한 기능의 중복

* 호스트 OS와 게스트OS간의 기능 중복

  - 프로세스 스케줄링


2) 상대적으로 무겁다

* 오버헤드 (15 ~ 20%)정도


3) 배치(Deployment)의 어려움






컨테이너 기반 가상화


* 도커의 개념


1) Build-Ship-Run






   이미지를 만들고                         배포를 하고                        수행하는데 쉽게 만듦.






* 기존의 가상화와 다른 개념


 


1) 하드웨어 가상화가 아닌 실행환경의 분리(isolation)

- Docker는 각 컨테이너 별로 완전하게 격리 시켰다.

- 그러므로 컨테이너 단위로 배포를 시킨다.


2) 각 컨테이너간 영향을 분리




Hypervisor는 Host OS위에 Guest OS를 올린다.        Docker는 Guest OS 개념이 없다.

(Type2)                                                                      






* 도커의 성능


1) 오버헤드가 5% 이내




기존 Hypervisor기반 가상화에서는 오버헤드가 10~15% 됐는데 Docker 사용시 3~5%이내다.

위 그림에서는 Network 성능이 떨어지는데 현재 최신 버전에서는 0.97~0.98 정도로 향상 되었다.




* 도커의 특징


1) 모든 컨테이너들이 동일 OS 커널 공유(Linux Only)


* 독립적인 스케줄링이나 CPU/메모리/디스크/네트워크를 가상화하지 않음



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


* 리눅스에서만 사용 가능

- 처음에는 우분투에서 / 현재 리눅스 배포판(fedora, RHEL, centos,...)에서 사용 가능


* 다른 OS(윈도우/OSX)에서는

- 일반 하이퍼바이저(경량)가 있어야 함


* 현재는 LXC -> Libcontainer를 사용해 리눅스 의존도를 줄이려 하고 있음





**********************도커의 특징 정리**********************

1) 시스템의 분리에는 Linux Containers(LXC)


- 컨테이너 독립기능 제공



2) 파일 시스템은 Advanced multi layered unification filesystem(Aufs)를 사용


- Aufs를 설명하자면 예를들어 계열이 비슷한 Ubuntu랑 Debian이 있다고 하자.

위 두개의 이미지를 동시에 만든다고 하면, 대부분의 공통적인 부분은 Share 하고

차이가 나는 부분만 별도로 나눠서 저장하는 개념의 파일 시스템



3) Git과 같은 이미지 버전컨트롤 시스템 도입







▷ 리눅스 컨테이너 가상화(LXC) 기반


▷ 2014년 6월 1.0 출시


▷ 구글과 같은 메이저 벤더들에 빠른 속도로 채택


▷ 현재 사실상의 표준(de facto standard)이 됨


▷ 하이퍼바이저와 달리 게스트OS란 계층이 없고 커널을 공유하면서 실행환경을 격리시키는 개념으로

    나왔기 때문에 더 가볍고, 빠른 성능이 남


▷ 하이퍼바이저 기반의 우분투와 도커 기반의 우분투가 실제 설정/사용하는 방식이 상이(가장 중요)

* 환경변수 설정, 서비스 수행 방식,...


▷ 구글에서 만든 Go라는 언어로 작성












/***/ Summary /***/




▷ 하이퍼바이저의 특징 및 한계점


- 기능의 중복, 오버헤드가 많다.


▷컨테이너 기반 가상화의 특징


- 실행환경의 격리, 오버헤드가 작다, 게스트 OS로 리눅스/유닉스 계열 OS만 가능하다.


▷도커


- Go언어로 작성, LXC(리눅스컨테이너)를 사용해서 제작        // libcontainer로 OS에 관계없는 적용 목표


- LXC = cgroups + namespace

- LXD(Machin Container) vs LXC(Application Container)






'Container & K8S & Automation > Docker' 카테고리의 다른 글

2) Docker 설치 및 컨테이너 실행  (0) 2019.01.30
Docker - 컨테이너란? (Container)  (1) 2019.01.30
1) Docker(도커)란?  (0) 2019.01.30
Docker - LXD  (0) 2019.01.16
Docker - LXC  (0) 2019.01.16