Virtual Machine VS Container
VM과 Container는 둘 다 Application을 실행하기 위한 격리된 환경을 제공한다.
Virtual Machine
Host OS 위에서 Hypervisor를 통해 자원을 가상화하여 VM을 동작
Host OS 위에 Guest OS가 동작하는 구조
이미지를 전체 운영 체제와 함께 묶어 배포기 때문에 상대적으로 더 무겁고 덜 휴대적이다.
Flavor는 hypervisor에서 VM을 생성할 때 A VM과 B VM을 서로 다르게 설계할 수 있게 해준다.
Container
Host OS에서 프로세스를 위한 공간을 별도로 분리
기본적인 Binary, Library 만을 guest os 대신 사용
필요한 모든 것들이 이미지에 패키지 되어 있기 때문에 가볍고 이식성이 뛰어나기 때문에 어떤 환경에서도 돌릴 수 있다. -> potable하다.
VM과는 다르게 공간의 크기르 자유롭게 늘리고 줄이는 스케일링이 가능하고,
Namespace와 Cgroup이라는 프로세스의 관리와 격리를 위한 기술을 사용한다.
Namespace
프로세스들 간에 서로 다른 환경을 제공해 줄 수 있다.
여러 명의 사용자나 프로세스 들이 동작을 하는데 서로 영향을 미치지 않도록 격리시켜 주는 역할을 한다.
Cgroup
시스템 자원을 프로세스들 간에 효율적으로 사용할 수 있게 분배해준다.
Container는 가볍고 이식성이 뛰어나기 때문에 대규모 분산 애플리케이션 및 마이크로서비스 아키텍처에 더 적합하다.
VM은 더 격리된 환경이 필요한 경우나 여러 운영 체제를 동시에 실행하야 하는 경우에 유용하다.
수많은 서버가 모여있는 센터 - IDC (Internet Data Center)
-> 수많은 가상머신, 컨테이너가 모여 있는 센터 - 클라우드
서버들 속에 hypervisor, container engine이 만드는 VM, Container 운용, 관리 기술을 공부하는 것이 결국 클라우드 기술을 학습 하는 것이다.