3. [Docker] 도커와 기존 가상화와의 차이

 

 

 

주로 사용하는 건 호스트형 하이퍼바이저 이다.

 

 

 

하이퍼바이저

- 호스트 컴퓨터에서 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼을 말한다.

- 하나 이상의 가상머신을 실행하는 컴퓨터가 "호스트(Host")가 되고 각 가상머신들은 "게스트(Guest)가 된다.

- 하이퍼바이저는 게스트 운영체제에서 가상 운영 플랫폼을 제공하면서 게스트 운영체제를 관리한다.

- 호스트 시스템에서 다수의 게스트OS를 구동할 수 있게 하는 소프트웨어

- 하드웨어를 가상화하면서 하드웨어와 각 VM을 모니터링하는 중간관리자이다.

 

도커와 기존 가상화와의 차이

VM과 비교했을 때 컨테이너는 하이퍼바이저와 게스트OS가 필요하지 않으므로 더 가볍다

어플리케이션을 실행할 때는 컨테이너 방식에서는 호스트OS위에 어플리케이션의 실행 패키지인 이미지를 배포하기만하면되는데 VM은 어플리케이션을 실행하기 위해 VM을 띄우고 자원을 할당한 다음에 게스트OS로 부탕하여 어플리케이션을 실행해야 해서 훨씬 복잡하고 무겁게 실행을 해야한다.

공통점 : 기본 하드웨어에서 격리된 환경 내에 애플리케이션을 배치하는 방법

차이점 : 격리된 환경을 얼마나 격리를 시키는지의 차이

 

도커 컨테이너에서 돌아가는 애플리케이션은 컨테이너가 제공하는 격리기능 내부에 샌드박스가 있지만, 여전히 같은 호스트의 다른 컨테이너와 동일한 커널을 공유한다. 결과적으로 컨테이너 내부에서 실행되는 프로세스는 호스트 시스템(모든 프로세스를 나열 가능)에서 볼 수 있다.

가상머신과 VM내부에서 실행되는 것은 호스트 운영체제 or 하이퍼바이저와 독립되어 있다. VM만을 위한 커널을 부팅하고 운영체제 프로세스를 시작한다. 이것은 응용프로그램만 포함하는 일반적인 컨테이너보다 VM의 크기를 훨씬 크게 만든다. OS..가상화..맥에서 윈도우..사용법은 간단할 수 있지만 굉장히 느리다.

 

 

어떻게 도커 컨테이너를 격리를 시키는가?

리눅스의 Cgroup(control group)네임스페이스(namespaces)에 대해 알아야 한다

이것은 컨테이너와 호스트에서 실행되는 다른 프로세스 사이에 벽을 만드는 리눅스 커널 기능이다.

Cgroup

- CPU, 메모리 등 프로세스 그룹의 시스템 리소스 사용량을 관리한다.

- 어떤 애플리케이션이 사용량이 많으면 C group에 넣어 cpu와 메모리 사용 제한 가능하다.

 

네임스페이스

- 하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술

- 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 가상화 기술

 

 

'📕 Programing > 도커(Docker)' 카테고리의 다른 글

Window에서 Hyper-V 활성화  (0) 2021.12.06
[Docker] 클라이언트 명령어-1 ps  (0) 2020.09.27
image 만들기 - Dockerfile  (0) 2020.09.07
Volume  (0) 2020.09.07
[Docker] 컨테이너 삭제  (0) 2020.05.29

댓글

Designed by JB FACTORY