VM vs Container
용어 정리
Container
- Application이 구동되는 환경까지 감싸서, 실행할수 있도록 하는 격리 기술
Container Runtime
- Container를 다루는 도구
Docker
- Container를 다루는 도구 중 가장 유명한 것
Orchestration
- 여러서버에 걸친 컨테이너를 사용, 관리하는 행위
Kubernetes(이하 K8s)
- Container런타임을 통해, Container를 Orchestration하는 도구
Virtualized vs Container
VM방식과 Container방식은 가장 큰 차이점은 GuestOS 가 존재하는가? 이다
Container방식은 OS(GuestOS)를 만들지않고, ContainerRuntime(Docker는 DockerEngine) 위에 Container가 설치되는 모습인것에 비해 VirtualizedMachine(VM)방식은 Hypervisor위에 OS(GuestOS)를 만들고, 그 내부에 프로그램을 설치하는 방식이다.
리소스적인 관점에서 보았을떄는 GuestOS를 만드는 과정이 Container를 만드는것보다, 리소스가 더욱 많이 소모되기떄문에 VM방식이 Container방식보다 리소스소모가 크다고 표현하는것이다.
두 방식 모두, 다른프로세스에는 영향을 끼치지않는다. VM방식은 서로 다른 리소스를 애초에 할당하며, Container방식은 일종의 공간벽이 세워지기 떄문이다. Container끼리 서로 영향을 주지않는 이유는 namespace, Cgroup이 일종의 공간벽을 쳐준다.
Container방식이 꼭 안전한것은 아니다. 설계구조상 OS(GuestOS가 없으므로 HostOS이다) 의 커널을 공유해서 사용한다.
만약 하나의 Container에서 OS커널에 영향을 주게 된다면, 커널을 공유하는 Container의 특성상 다른 Container에도 영향을 줄수있다.
대부분 사람이 혼동하는것이 OS라고 말할때 OS가 Host의 것인지, Guest의 것인지를 헷갈려하는 사람이 많다.
Container방식은 추가되는 OS가 없으므로, 해당방식에서는 모두 Host의 OS이다.
반면 VM방식은 이야기가 다르다. 기존에 존재하는 OS가 있는 상태에서, 추가로 OS를 만들기 떄문이다.
기존에 존재하는 OS 를 HostOS라고 부르고, 새롭게 생성한 OS를 GuestOS라고 부른다.
'CS지식' 카테고리의 다른 글
RAID 전략에 대해서 알아보기 (0) | 2022.11.12 |
---|---|
In-Memory 는 왜 쓸까? (0) | 2022.11.01 |
도커와 가상환경(VM)의 차이 (0) | 2022.07.04 |
캐시메모리가 빠른 이유 (0) | 2022.07.04 |
파이썬이 C언어보다 느린 이유 (0) | 2022.07.02 |