먼저, 하이퍼 바이저에 대해서
VM은 가상화 기술로 "하이퍼 바이저 기술 기반"에 대해 짚고 넘어가야 한다.
하이퍼 바이저는 호스트 시스템에서 여러 게스트 OS(윈도우, 리눅스 등)를 구동할 수 있게 해주는 소프트웨어 이다.
또한 하드웨어를 가상화 하면서 하드웨어와 각각의 VM을 모니터링하는 중간 관리자 역할을 한다.
이러한 기술로 기존에는 하나의 서버로, 하나의 용도로만 사용되었던 이전과는 달리
하나의 서버에서 논리적으로 공간을 분할해서 VM이라는 독립적인 가상 환경의 서버를 이용 가능하게 되었다.
하이퍼 바이저 기반의 VM은 어떻게 생겼을까
하이퍼바이저에 의해 구동되는 VM은 각 VM마다 독립된 가상 하드웨어 자원을 할당 받게 된다.
위와 같은 구조로 생겼으며, 중간에 하이퍼 바이저가 존재함을 확인할 수 있다.
코어가 하나씩 독립된 가상 하드웨어에 자원을 받는 것이다.
코어가 각 독립된 자원을 할당 받는다.
왼쪽의 VM에서 오류가 발생해도 격리가 되어 다른 VM에 에러가 퍼지지 않는다는 장점이 있다.
그렇다면, 도커와 VM 의 공통점과 차이점은 무엇이 있을까
공통점이라면 도커 컨테이너와 가상 머신 둘 다, 기본 하드웨어에서 격리된 환경 내에서 애플리케이션을 배치하는 방법이라는 것이다.
먼저 컨테이너는 도표에서도 확인할 수 있듯이, 하이퍼바이저와 게스트 OS가 없기 때문에 비교적 가볍다.
그리고 VM은 하이퍼바이저로 게스트 OS를 각각 얹어주기에 더 무겁다. 원체 게스트 OS가 무거운 것도 한 몫 한다.
도커 컨테이너는 같은 호스트의 다른 컨테이너와 동일한 커널을 공유한다.
즉, 컨테이너 내부에서 실행되는 프로세스는 호스트 시스템(모든 프로세스 나열할 수 있는 권한이 있는 경우)에서 볼 수 있다.
또한 도커 컨테이너에서는 호스트 OS(Host Operating System) 위에 애플리케이션의 실행 패키지인 '이미지'를 배포만 하면 되는데
VM은 하나의 애플리케이션을 실행하기 위해서 VM을 띄우고, 자원을 할당하고, 게스트 OS를 부팅한 뒤에야 비로소 애플리케이션을 실행할 수 있다.
훨씬 보잡하고 무겁게 실행을 하게 되는 것이다.
결국 가상 머신과 함께 VM 내부에서 실행되는 모든 것들은 호스트 운영 체제나 하이퍼바이저와 독립되어 있기 때문에, 그만큼 간단하지만 무겁다는 의미이다.
참고자료
따라하며 배우는 도커와 CI환경 - 인프런 | 강의
이 강의를 통해 도커에 대해서 배울 수 있으며, CI 환경을 구성할 수 있습니다., - 강의 소개 | 인프런
www.inflearn.com