Docker 구조 (Feat. Hypervisor / VM)

김민건·2021년 12월 27일
0

기술

목록 보기
14/19

#주저리주저리

저번 시간에는 Docker의 기본적인 개념과 장단점에 대해 알아보았다.
이번에는 좀 더 세부적으로, 왜 이런 장단점이 생길 수 밖에 없는지, 왜 이런 접근 방법으로 Docker를 만들어야했는지 알아보려고 한다.

Hypervisor VS Container

Layer 구조

위의 이미지는 Hypervisor 가상화와 Container 가상화를 사용했을 때 나타나는 구조이다.
여기서 우리는 HypervisorDocker Engine이 각각의 구조에서 같은 위치에 있다는 것을 확인할 수 있다. 그런데 Hypervisor는 그 위에 Guest OS라는 layer를 추가적으로 지니는 것을 볼 수 있는데... 이게 어떤 차이를 만들어내는걸까?

차이점

1. 운영체제 독립

(1) 실행 속도와 체급 차이

가장 핵심적인 차이점는 독립적인 운영체제 분리 유무이다.
큰 틀에서 보면 이 차이점이 VirtualMachine과 Docker Engine의 장단점을 판가름한다고 생각할 수 있을 것 같다.
다들 흔히 알고있는 VirtualMachine을 생성하고 구동하는데 사용되는 소프트웨어가 바로 Hypervisor다.
Hypervisor가 기존 PC의 OS에서 가상환경에 게스트 OS를 설치하여 Windows에서 Linux, Linux에서 Mac OS를 사용할 수 있도록 독립적인 환경을 제공해주는 것이다.

하지만 그에 반해 Docker Engine은 Host OS에 종속적이다.

"그럼 VM보다 Docker가 안 좋은거 아닌가요?"

만약 다른 OS에서 작업할 환경이 필요하다면 VM이 적합한 선택지가 되겠지만, 일반적인 개발자의 입장에서 생각해보자. 사실 우리는 Linux OS에 서버를 배포하고 개발도 진행한다. 그럼 우리가 굳이 Guest OS를 설치하면서 불필요한 디스크 용량을 차지하고, Guest OS를 실행하면서 불필요한 메모리와 시간을 소비할 필요가 있을까? 적어도 나는 아니라고 본다.

이로 인해 빠른 실행 속도작은 메모리와 용량 차지의 특징을 지닌다.

(2) Portability

빠른 실행 속도와 작은 메모리와 용량으로 인해 이식성이 높기도 하지만, 다른 이유가 한가지 더 있다.

별도의 Guest OS가 사전적으로 준비되어야하는 VM의 경우에는 각기 다른 플랫폼으로 포팅하기에 부적절하지만, Docker는 어떤 환경에서도 Docker가 설치되어 있다면 (Docker Hub를 통해 다운로드받는 것으로) 간편하게 복사/이동시킬 수 있다.

(3) Security

VM은 독립적인 커널과 보안 기능들이 오롯이 VM 내부에 존재하지만, Docker의 경우에는 Host OS를 공유하기 때문에 하나의 어플리케이션이 해킹당하면 해당 서버의 타 어플리케이션에 영향을 줄 수 있다.
따라서 보안적인 측면에서 VM에 비해 Docker가 취약하다.

공통점

(1) 가상화

VM과 Docker 모두 어떤 Level에서 가상화를 하는지가 다를 뿐, 둘 모두 가상화를 통해 독립적인 환경을 조성하는 것이 주 목적이다.

(2) 자원 공유

VM과 Docker 모두 하나의 고스펙 서버에서 최대한의 퍼포먼스를 뽑아내기에 최적화되어 있다. 각각의 VM 또는 Container의 자원 할당량이 고정되어 있지 않고, 유동적으로 Host OS의 자원을 필요한 장소에서 사용하기 때문에 각각의 어플리케이션을 별도의 서버에서 구동할 때보다 더욱 안정적이고 효율적으로 동작할 수 있다.

마치며

오늘은 Docker Engine과 Hypervisor에 대해 알아보면서 Docker의 근본적인 개념과 장점을 매핑하면서 살펴보았다.

다음에는 개발자 입장에서 Docker의 각 구성요소에 대해 알아보는 시간을 가져보자!

profile
백엔드 꿈나무

0개의 댓글