본문 바로가기

TEAM STUDY/SERVER

🔵쿠버네티스 강의 1주차 - VM 과 Container 차이

728x90
반응형

🔵 가상머신(Virtual Machine, VM) ?

 

클라우드 서비스 형태로는 기본 엔진(AWS: EC2, GCP: GCE 등)으로 제공 되며 

일반적으로는 독자적으로 구성하여 운영합니다. 

 

전가상화의 느린 속도를 개선하기 위해 현재는 반가상화 방식으로 일정 퍼포먼스를 제공하나 

리얼 머신에 비해서 아직도 속도가 느린편입니다.


더 쉽게 설명을 하면 VMware, VirtualBox와 같이 Host OS위에 Guest OS를 가상화 하는 방식입니다. 

예전에는 Guest OS 전체를 가상화하였습니다.

 

사용법이 간단하지만 무겁고 느려서 운영환경에 적용하기는 어려웠습니다

그래서 현재는 Xen과 같은 반가상화 방식으로 구성되고 있습니다.

 


🔵 Container ?

 

VM 과 같이 가상화하는 방식은 무겁고 성능 문제가 발생하기에 

프로세스를 격리하는 방안이 등장 하였습니다. 

 

오래전부터 리눅스 환경은 chroot라고 하여 

파일시스템에서 루트 디렉토리를 변경하는 명령어를 제공하였습니다. 

 

즉 jail과 같은 환경이 생성되는 것이죠. 

(루트 디렉토리를 변경을 활용하여 격리) 

 

그러나 여기에 들어갈 실행 파일과 라이브러리를 준비해야하고 설정 방법이 복잡합니다.

(복잡하면 사람들이 잘 활용하지 않습니다.) 

 

그래서 등장한 것이 LXC(Linux Container)라는 것을 제공하였습니다.

 

 

LXC는 가상화된 공간을 제공합니다. 

그리고 강력한 API와 간단한 도구들을 통해서 사용자가 쉽게 어플리케이션 컨테이너를 생성할 수 있게 하였습니다. 

하드웨어 자원들을 cgroups을 통해 할당하고 namespace를 활용하여 

프로세스나 IPC 등을 격리시켜 별로의 공간을 만드는 형태입니다. 

도커도 기존에는 LXC를 기반으로 구현하였습니다.


🔵 VM 과 Container 차이

 

 

위에서 언급한바와 같이 VM은 하이퍼바이저 위에 Guest OS가 올라가는데 

그 위에 Binary와 라이브러리 등을 모두 구성해야 하기에 무겁고 성능저하가 발생합니다. (오버헤드 발생) 

 

그런데 도커의 경우에는 하이퍼바이저가 필요 없고 도커엔진만 있으면 그 위에 어플리케이션과 바이너리 및 라이브러리가 포함된 컨테이너만 올리면 되는 구성입니다. 

 

정리하면 OS의 자원인 커널을 공유하지만 어플리케이션 단위로 추상화하여 서로 격리하는 형태입니다. 

 

즉 OS overhead가 없으니 Start Time도 빠르고 자원 효율성도 높습니다. 

 

그리고 가장 큰 장점중의 하나로 Host OS가 어느 것이든지 상관없이 도커 엔진만 있으면 배포될 수가 있습니다. 

이런 사항을 확장하면 멀티 클라우드, 하이브리드 환경을 구축할 수 있겠죠.


참고 사이트


728x90
반응형