Content.

1) VM이 등장한 배경과 구조

2) 그런데 왜 도커가 등장했을까?

3) 도커 컨테이너와 이미지 핵심 개념

1) VM이 등장한 배경과 구조

한 대의 물리 서버를 운영하다 보면, 자원이 비효율적으로 사용되기도 하고, 서비스나 팀별로 실행 환경을 분리해야 할 필요도 생긴다.

그래서 하나의 물리 서버를 여러 개햐의 독립 서버처럼 나눠, 자원 활용은 높이면서도 서로 간섭하지 않게 만드는 구조가 필요해졌다.

image.png

이때 도입된 해결책이 **하이퍼바이저(Hypervisor)**이다.

✅ 하이퍼바이저란?

<aside>

하이퍼바이저는 한 대의 물리 서버에서 여러 개의 가상 머신(VM)을 만들고 실행·관리하는 가상화 소프트웨어로, 하드웨어 자원을 VM들에게 나눠 주고 서로 격리되게 동작하도록 중재한다.

</aside>

VM의 계층 구조는 다음처럼 이해하면 된다.

*Hardware 
 ↓
Hypervisor
 ↓
(Virtual HW  → Guest OS → Apps) x N*

→ 즉, VM은 각 인스턴스가 자기만의 Guest OS(커널 포함)를 가지고 독립적으로 동작한다.

2) 그런데 왜 도커가 등장했을까?

VM 구조는 격리 수준이 강한 대신, VM마다 Guest OS를 포함해야 하므로 애플리케이션 실행/배포 단위가 무거워지기 쉽다.

그런데 현개 개발에서는 배포·테스트 사이클이 빨라지고, MSA 처럼 서비스를 더 작은 단위로 쪼개 빠르게 배포/확장 해야 하는 상황이 많아졌다.

결국 VM은 머신 단위 격리에는 강하지만, 앱 단위 배포 관점에서는 오버헤드가 큰 경우가 많다는 문제가 드러났고, 이를 보완하는 방향으로 컨테이너가 확산되었고, 이를 사용하기 쉬운 형태로 대중화한 것이 도커이다.