본문 바로가기
DevOps/DockerKubernetes

가상화와 컨테이너의 차이는 무엇?

by 계영수 2022. 8. 11.
728x90

본 포스팅은 필자가 모두 생각하여 작성한 것으로 제 허락없이는 일부 혹은 전부 재사용이 불가합니다.

 

이번 포스팅에서는 가상화와 컨테이너 기술의 차이에 대해서 생각해볼까 한다. 이러한 내용은 설명한다고 설명되는 것도 아니고, 본인도 이해하기 벅찬 부분들이 있기 때문에 같이 생각해본다는 표현을 사용하였다.

 

우선 가상화 기술에 대해서 정리하여 보자.

 

가상화 기술은 컴퓨터에 하이퍼바이저라는 소프트웨어를 설치하게 된다. 이 하이퍼바이저는 가상화 기술을 이용하여 컴퓨터에 가상으로 컴퓨터를 구성하는 하드웨어를 만들고, 이렇게 만들어진 가상적인 컴퓨터에 운영체제를 설치하게 된다.  

 

이미 내 앞에 있는 컴퓨터에 운영체제를 설치했는데, 어떻게 다시 운영체제를 또 설치할 수 있을까?  운영체제라는 것이 필수적으로 하드웨어를 처음으로 인지하는 프로그램이다. 즉 컴퓨터의 하드웨어를 직접 제어하는 것이 운영체제이다. 따라서 운영체제는 이미 설치된 운영체제에 프로그램 형태로 다시 동작하는 것은 불가능하다. 하지만 하이퍼바이저라는 녀석이 이미 운영체제가 설치된 컴퓨터에 가상화 프로그램을 이용하여 가상의 컴퓨터 하드웨어가 존재하는 것처럼 가상의 컴퓨터를 만들고, 거기에 운영체제를 설치할 수 있게 만들었다.

 

가상화 기술이 처음 나왔을때는 매우 놀라왔다.  하나의 컴퓨터를 사용하여, 여러대의 컴퓨터 역할을 한다는 것이 여러가지 이유 때문에 많은 혁신을 가져왔다.  하지만 기술이 지속적으로 발전하고, 발전의 속도에 가속이 붙어서 기술의 혁신이 단순히 기술의 발전을 의미하지 않고, 가성비를 고려하게 되었다. 이때 나온것이 바로 컨테이너 기술이다.

 

가상화 기술을 이용하여 여러 서버 프로그램을 하나의 컴퓨터에서 운영하는 경우, 즉 서버 프로그램마다 가상머신을 만들어서 하나의 물리 컴퓨터에서 운영하는 경우, 문제는 가상머신마다 사용하는 운영체제가 중복적으로 존재하는 것이다. 예를 들자면 하나의 컴퓨터에 윈도우 10 가상머신을 10대 설치한다면, 문제는 아니 문제라기 보다는 똑같은 윈도우 10 가상머신을 하나의 물리 컴퓨터에서 돌리는데, 그 가상머신의 운영체제가 차지하고 소비하는 리소스가  낭비인 것이다. 

 

반면에 콘테이너는 콘테이너마다 운영체제를 가지고 있지만, 컨테이너가 가지고 있는 운영체제는 하나의 독립적인 완벽한 운영체제가 아니라 운영체제처럼 보이는 소프트웨어로 실제로 컨테이너의 프로그램이 사용하고 의지하는 운영체제는 컨테이너가 돌아가는, 즉 Docker Engine이 설치된 시스템의 운영체제를 사용하고 있을 뿐이다. 컨테이너는 컨테이너를 여러대 돌린다고 해서 운영체제를 중복하여 사용하지 않는다.

 

컨테이너와 가상머신

컨테이너와 가상머신은 리소스를 가상화하고 고립화시키는 측면에서는 동일하지만, 실제 동작 방식에서는 차이가 있다. 가상머신은 기존의 서버에 하이퍼바이저를 설치하고, 그 위에 가상 OS와 APP을 패키징한 VM을 만들어 실행하는 방식인 하드웨어 수준의 가상화를 지원한다. 반면에 컨테이너는 운영체제를 제외한 나머지 어플리케이션 실행에 필요한 모든 파일을 패키징한다는 점에서 OS 레벨 가상화를 지원한다.

특히 컨테이너는 게스트OS와 하이퍼바이저가 없기 때문에 이로 인한 오버헤드를 줄임으로써 훨씬 더 가볍게 프로세스를 실행할 수 있고 컨테이너에 대한 복제와 배포가 더 용이하다.

 

▶ 컨테이너: 어플리케이션 레벨에서 필요한 소스코드와 관련 라이브러리들을 하나로 패키징하여 별도의 실행환경을 만든 것이다. 여러개의 컨테이너가 동일한 호스트에서 커널을 공유하면 실행된다. 커널을 공유하지만 개별적인 '사용자 공간(user space)'을 가진다. 컨터에너는 커널을 가지지 않으므로 더 가볍고, 실행할 때 더 적은 리소스를 사용한다.

▶ 가상머신: 물리적인 하드웨어를 가상화하는 기술이다. 이 기술을 통해 1개의 서버를 여러 개의 서버처럼 활용할 수 있는 효과를 가진다. 개별 VM은 독립적인 운영체제를 포함하고 있다. 이러한 이유로 도커에 비해 고립성은 더 좋을 수 있겠지만, 가상 환경의 시작에 걸리는 오버헤드가 커지기 때문에 더 무겁고 느리다는 단점을 가진다. 

 

728x90