본문 바로가기
풀스택 개발 들여다보기

[Docker] 가상머신 Vs. 컨테이너

by 영바이트 2022. 2. 11.

도커를 살펴보기 전에 가상머신과 컨테이너의 차이점에 대해 살펴보자. 그래야 도커를 실행키기면서 내가 하고 있는 일이 무엇인지 알 수 있기 때문이다.

 

가상머신(Virtual Machine, VM)은 하이퍼바이저Hypervisor와 게스트Guest OS로 구성된다. 하이퍼바이저는 시스템의 물리적인 자원을 가상화(virtualization)해준다. 가상화의 예를 하나 들자면 물리적으로 하나 뿐인 CPU 코어를 시간 단위로 나누어 사용하는 방식으로 여러 개의 논리적인 CPU로 보이게 해줄 수 있다. 좁게는 하이퍼바이저를 가상머신이라고 부르기도 한다.

 

가상 머신의 구조

 

컨테이너와 가상머신의 가장 큰 차이점은 첫째 컨테이너 구조에서는 하이퍼바이저가 없는 점, 둘째 컨테이너는 어플리케이션application에 해당하는 프로세스라는 점이다.

 

컨테이너 구조

 

컨테이너의 구조를 보면 컨테이너를 관리하는 도커 어플리케이션이 OS위에서 바로 동작한다. 그리고 이 OS는 반드시 Host OS일 필요가 없다. 조금 헷갈릴 수도 있겠지만 가상머신의 Guest OS 위에 도커를 설치하고 동작시킬 수 있다.

 

가상머신 위에서 동작하는 도커

 

그리고 한 가지. 도커 컨테이너는 리눅스 프로세스로 구성된다. 따라서 Host OS위에서 도커를 동작시키는 경우에는 Guest OS로 리눅스가 반드시 필요하다. 리눅스 서버와 같이 Host OS가 리눅스인 경우 바로 도커를 설치하고 동작시킬 수 있지만 윈도우 혹은 맥 OS에서 도커를 사용하기 위해서는 가상머신으로 리눅스를 설치해야 한다.

 


 

요약하면 도커, 그리고 도커 컨테이너는 모두 리눅스 프로세스이고 응용 프로그램(=어플리케이션application)이라는 것이다. 도커 컨테이너를 실행시킨다는 것은 리눅스 응용 프로그램을 실행시키는 것과 같다.

 

※ 좀 어려운 이야기가 될 수도 있겠지만 도커 컨테이너는 Linux Container Server(LXC)라는 기술을 사용하는 프로세스다. 이 LXC 기술을 이용해서 컨테이너 안에 컨테이너 외부와 격리된 실행 환경을 구성할 수 있게 만들었다.

 

 

댓글