교육, 커뮤니티 후기/인프런 교육

<인프런> 대세는 쿠버네티스 [초급] - No.3 VM vs Container

Somaz 2022. 7. 16. 17:18
728x90
반응형

Overview

이번시간에는 VM vs Container 에 대해서 알아보려고 한다.

 

VM vs Container

VM은 Host OS 위에 가상화시켜 주기 위한 Hypervisor, virtul box 등이 올라 간다. 
그 위에 Guest OS를 올려서, 여러 VM들을 만들어서 Applicatin, Serivce를 독립적으로 사용할 수 있다.

 

반면 Continer는 Host 위에 Continer가 올라가고 그 위에 이미지를 통해 바로 Serivce나 Application들이 올라가게 된다.
Container를 쓰는 이유는, OS 버전 차이에 따른 서비스 호환성을 해결해준다.

 

 

예를 들어보자면 아래의 사진과 같이, Linux6 버전에서 개발한 것들을 Linux 7로 옮겨 버리면 라이브러리 버전이 다르기 때문에 잘 작동하지 않을 수 있다. 따라서 나중에 Linux7버전을 쓰게 되더라도 Linux 6 image를 가져와 Container에 올리게 되면 쉽게 작동 시킬 수 있다. 

 

정리해보자면, docker와 같은 Container 가상화 솔루션들은 OS에 제공하는 자원 격리 기술을 이용을 해서 Container라는 단위로 서비스를 분리를 할 수 있게 만들어준다. 이걸 사용하면, Container 가상화가 설치되어 있는 OS에서는 개발환경에 걱정 없이 배포가 가능하게 됩니다.

 

시스템 구조적으로 Container는 한 OS를 공유하는 개념이고, VM은 각 각의 OS를 띄워야 하는 구조이기 때문에, Container가 훨씬 빠를 수 밖에 없다.

 

단점은, VM은 Window를 사용하고 있어도 Guest OS를 Linux를 사용할 수 있다. 그러나 Container는 Linux OS를 사용하고 있으면 Window VM을 띄울 수 없다.

 

또한, 보안적으로도 문제가 있다. VM은 하나의 VM이 해킹을 당해도 다른 VM으로 피해가 가지 않는다. 그러나, Container는 한개의 Container가 해킹을 당하게 되면, 다른 Container들도 피해를 입게 된다. 

 

다만, 이러한 문제들은 개선되가고 있다.

  • namespace : 커널 분리
  • cgoups : 자원 분리

 

 

 

728x90
반응형