가상화란?
컴퓨터에서 컴퓨터 리소스의 추상화를 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다.
흔히 우리는 가상화를 떠올리면 '가상머신(vm)'을 떠올리게 된다. 쉽게 말해, Window 환경과 Linux 환경을 동시에 사용하고 싶다면 OS별로 물리적 서버 또한 두 개를 필요로 하게 되는데 이는 비용면으로도, 효율면에서도 효과적이지 않다. 따라서 우리는 가상화를 이용하여 한 물리적 서버에서 다양한 운영체제를 실행 할 수 있는 것이다.
VM(Virtual Machine) - 가상머신
이 가상머신은 같은 서버에서 다양한 운영체제를 돌릴 수 있으며, 빠른 프로비저닝을 할 수 있는 등 큰 장점을 갖지만 너무 커질 수 있는 단점 또한 가지고 있다.
하이퍼 바이저가 등장하면서 물리 서버 자원을 추상화하고, 논리적으로 공간을 분리하여 VM이라는 독립적인 가상환경 서버를 사용할 수 있도록 한다.
가상머신은 흔히 VMware, VirtualBox 등이 있는데 아직 Apple silicon 칩이 탑재된 M1 MacOS의 경우 가상머신쪽의 인프라가 좋은 편은 아니다.
Container - 컨테이너
컨테이너의 경우 가상머신과는 다르게 기본 운영체제를 가상화하고, 컨테이너화된 APP이 CPU, Memory, Storage 등 OS를 자체적으로 포함하고 있다고 인식하도록 한다.
기본 이미지가 일관적일 때 이 컨테이너화된 App은 어디서든 쉽게 배포할 수 있다.
컨테이너는 호스트 OS를 공유하기 때문에 OS를 부팅하거나 라이브러리를 로드할 필요가 없기 때문에 효율적이고 경량으로 만들 수 있다.
출처- https://azure.microsoft.com/ko-kr/overview/what-is-a-container/#why-containers