본문 바로가기

development/Cloud

[Docker] 가상화 기술, 하이퍼바이저, 컨테이너의 이해: 하나의 OS에서 모든 소프트웨어를 실행하면 왜 위험할까?

하나의 컴퓨터에서 여러 개의 소프트웨어를 실행한다고 생각해봅시다. 이론상 문제 없어 보이지만, 현실에서는 다양한 문제가 발생할 수 있습니다.
예를 들어, 하나의 프로그램이 오류를 일으키거나 과도한 리소스를 사용하게 되면, 다른 프로그램까지 영향을 받을 수 있죠.

이런 문제를 해결하기 위해 등장한 기술이 바로 가상화 기술(Virtualization)입니다.

 


가상화 기술이란?

가상화(Virtualization)는 하나의 물리적 컴퓨터 안에 여러 개의 논리적 OS 환경을 만들어 각각 독립적으로 소프트웨어를 실행할 수 있도록 해주는 기술입니다.
이를 통해 리소스를 직접 분배하거나, 서로 격리된 환경에서 소프트웨어를 안정적으로 운영할 수 있습니다.

가상화의 장점

  • 프로그램 간 리소스 충돌 방지
  • 하나의 에러가 다른 서비스에 영향을 주지 않음
  • 서버 설치 공간, 전력 소모, 배선 등의 비용 절감
  • 엔터프라이즈 환경에서 효율적인 자원 활용 가능

프로세스와 운영체제(OS)의 관계

모든 프로세스는 CPU, 메모리 같은 하드웨어 리소스를 사용해야 실행됩니다.
하지만 직접 접근은 불가능하고, 반드시 운영체제(OS)의 커널을 통해 시스템 콜을 보내야만 사용할 수 있습니다.
이는 하드웨어 리소스는 민감하고 복잡하게 다뤄야 하기 때문입니다.


가상화 기술의 종류

가상화는 크게 두 가지 방식으로 나뉩니다:

1️⃣ 하이퍼바이저(Hypervisor) 방식

하이퍼바이저 방식은 전통적인 가상화 기술입니다.
하나의 물리적 OS를 Host OS라 부르고, 이 위에 하이퍼바이저를 설치해 여러 개의 Guest OS를 만듭니다. 우리가 흔히 말하는 '가상 머신(VM)'이 바로 이 Guest OS입니다.

동작 방식

  • Guest OS는 리소스를 직접 쓰지 못하고, Host OS의 커널에 요청해야 함
  • 하이퍼바이저가 Host와 Guest 간 시스템 콜을 중계 (통역가 역할)
  • 서로 다른 종류의 OS도 실행 가능 (예: Windows 위에 Linux VM)

단점

  • 시스템 콜 번역으로 인한 오버헤드 발생
  • 부팅 속도 느림
  • 실행 시 CPU, 메모리, 디스크 등 많은 자원 소모

대표 제품

  • VMware, VirtualBox, RedHat Hypervisor 등

2️⃣ 컨테이너(Container) 가상화

컨테이너 가상화는 하이퍼바이저보다 훨씬 가볍고 빠른 방식입니다.
대표적으로 Docker가 여기에 해당하죠.

핵심 개념

  • **커널 자체의 격리 기능(LXC)**을 사용
  • 별도의 Guest OS 없이 Host OS의 커널을 공유
  • 컨테이너 간에는 완전히 격리된 환경 제공

사용되는 기술

  • Namespace: 리소스를 기준별로 나누는 기능 (PID, 사용자, 네트워크 등)
  • Cgroup: 리소스 사용량을 제한하고, 격리하는 기능 (CPU, 메모리 등)

특징

  • 컨테이너는 부팅 속도가 빠르고 오버헤드가 낮음
  • Host OS의 커널을 공유하므로, 다른 종류의 OS는 실행 불가
비교 항목 하이퍼바이저 가상화 컨테이너 가상화
커널 공유 X (독립된 OS 사용) O (Host OS의 커널 공유)
부팅 속도 느림 매우 빠름
오버헤드 큼 (시스템 콜 번역 필요) 작음
OS 종류 다양성 가능 제한적 (Host OS 기반)
대표 예 VMware, VirtualBox Docker, LXC
 

Docker는 컨테이너 가상화 도구일 뿐

많은 분들이 Docker가 격리 환경을 직접 만드는 줄 아시지만, 실제로는 커널이 격리를 담당합니다.
Docker는 그저 이 과정을 편리하게 구성하고 관리할 수 있도록 도와주는 도구입니다.

반면, 하이퍼바이저 가상화에서는 하이퍼바이저 자체가 격리 환경을 만드는 주체입니다.


마무리

  • 가상화 기술은 안정적인 서비스 운영과 자원 효율성 확보를 위해 필수적인 요소입니다.
  • 하이퍼바이저 방식은 다양한 OS를 실행할 수 있지만 무겁고 느립니다.
  • 컨테이너 방식은 가볍고 빠르지만 OS 종류에 제약이 있습니다.
  • 운영 목적에 따라 적절한 방식의 가상화를 선택하는 것이 중요합니다.