3. Docker 사용의 기초 - 2

shlee7131·2021년 1월 22일
0

Docker

목록 보기
3/5

3. Docker 사용의 기초 - 2

3.A Docker Container와 VM

3.A.1 기본적인 차이점

Docker 컨테이너는 기존의 VM과 달리 Guest OS가 필요하지 않기 때문에 매우 가볍다. 그리고 애플리케이션을 구동할 때 컨테이너 방식에서는 실행 패키지인 이미지를 Host OS에 배포하면 되는데 VM 방식에서는 VM을 띄우고 하드웨어 자원을 할당한 다음에 Guest OS를 부팅하여 실행하기 때문에 매우 복잡하면서도 무겁다.

3.A.2 Docker Container


컨테이너가 제공하는 격리 공간 내부에 샌드박스(Sandbox)가 있지만, 여전히 Host의 다른 컨테이너와 동일한 커널을 공유한다. 그렇기에 Host System에서도 프로세스들을 볼 수 있다. 그리고 OS를 내장할 필요가 없기 때문에 전체적인 크기가 가볍다. 또한 컨테이너의 프로그램을 실행시키기 위한 하드웨어 자원(하드 디스크, 네트워크, RAM, CPU 등)은 필요한 양만큼만 공유받는다.

3.A.3 Virtual Machine

가상 머신과 함께 VM 내부에서 실행되는 모든 것은 Host OS 또는 Hypervisor와 독립되어 있다. 그러나 Docker Container와 달리 OS를 필요로하며 하드웨어 자원의 일부를 할당받아야하는 구조이다. 이로 인한 VM의 또다른 차이점은 VM만을 위한 커널을 부팅하여 OS를 시작하여야 한다는 점이다. 그래서 VM은 컨테이너보다 크기가 훨씬 크며 속도 또한 느리다.

3.B 공간 격리 : Cgroup & Namespace

컨테이너들을 격리시키는 방법을 알기 위해선 Linux에서 쓰이는 Cgroup(Control Groups)와 Namespace에 대해서 알아야 한다. 이 둘을 컨테이너와 호스트에서 실행되는 프로세스들을 격리시키는 벽을 만들어 주는 리눅스 커널 기능들이다.

3.B.1 Cgroup


CPU, 메모리, Network Bandwidth 그리고 I/O 등 프로세스 그룹의 시스템 리소스 사용량을 관리한다. 그래서 사용량이 많은 애플리케이션 같은 것을 Cgroup에 넣어 CPU와 메모리의 사용의 제한도 가능하다.

3.B.2 Namespace


하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술로써 별개의 독립된 공간을 사용하는 것처럼 격리된 환경을 제공하는 경량 프로세스 가상화 기술이다

profile
Arch-ITech

0개의 댓글