[Docker] 하이퍼바이저 가상화와 컨테이너 가상화

2024. 9. 9. 15:24·Docker · Git
728x90
반응형

❗ 하이퍼바이저 가상화와 컨테이너 가상화

가상화 기술에는 베어메탈, 하이퍼바이저, 컨테이너가 있다. 이번 글에서는 하이퍼바이저와 컨테이너에 대해 다루겠다.

 

출처 net solutions

✔ 하이퍼바이저 가상화

하나의 물리 서버에 가상 머신을 만들어 사용하는 것이다. 물리 서버는 호스트 서버, 가상 서버는 게스트 서버라고 부른다. Virtual Box와 VMware가 하이퍼바이저 가상화를 한다.

 


 

장점

  • 운영 체제 독립성: 운영 체제에 상관없이 서로 다른 OS(VM)를 동시에 실행할 수 있다.
  • 커널 격리: 각 가상 머신은 고유한 운영 체제를 실행하고, 독립적인 커널을 사용하므로 커널 수준에서 완전하게 격리된다. 보안적으로 더 나을 수 있다.
  • 다양한 호환성: 서로 다른 운영 체제에서 실행해야 하는 애플리케이션이 많은 경우 하이퍼바이저가 더 효율적일 수 있다.
    • 리눅스와 윈도우 운영 체제가 둘이 필요한 경우가 궁금했는데 이럴 때에는 컨테이너 말고 가상 머신 사용이 필수적인 듯하다.

 

단점

  • 무거움: 하이퍼바이저 방식은 각 VM이 독립된 운영 체제를 실행하므로, 메모리와 CPU 오버헤드가 크다. 각각의 VM이 자체 커널과 시스템 서비스를 실행해야 하므로 더 많은 리소스를 사용한다.
  • 느린 부팅 시간: 가상 머신은 운영 체제 전체를 부팅해야 하므로 시간이 오래 걸린다.
  • 자원 효율성 낮음: 각각의 VM이 자체 운영 체제를 실행하므로, 가상 머신 간 자원을 공유할 수 없다.

 


 

하이퍼바이저의 역할

가상 머신에 필요한 리소스들을 할당하고 관리한다.

 

가상 머신이 2 개 있다고 치자. 가상 머신 1은 MAC이고, 가상 머신 2는 Linux,  호스트 서버는 윈도우이다. 각 운영 체제마다 다른 시스템 콜을 사용한다. 하이퍼바이저는 호스트 서버와 가상 머신 중간에서 시스템 콜을 변환하는 역할을 한다. 가상 머신은 호스트 서버의 리소스를 사용하기 때문이다. 즉 Linux 가상 머신에서 시스템 콜을 하면 하이퍼바이저는 호스트 서버의 운영 체제인 윈도우 시스템 콜로 변환하여 커널에 접근할 수 있도록 한다.


✔ 컨테이너 가상화

하이퍼바이저 없이 커널의 자체 기술을 사용하는 가상화이다.

 


 

장점

  • 경량성: 컨테이너는 하이퍼바이저 가상화보다 가볍다. 최소한의 리소스만 사용하며, 호스트 OS의 커널을 공유한다.
  • 빠른 부팅: 전체 운영 체제를 부팅할 필요 없이 애플리케이션만 격리해 실행하므로 부팅 시간이 빠르다.
  • 자원 효율성: 각각의 컨테이너는 별도의 게스트 운영 체제를 실행하지 않으므로 오버헤드가 적다. 메모리와 CPU를 효율적으로 사용한다.

 

단점

  • 커널 의존성: 서로 다른 운영 체제를 실행하려면 호스트 커널을 가상화해야 하는 추가적인 레이어가 필요하다. 예를 들어, Windows에서 리눅스 컨테이너를 실행하려면 WSL2, LinuxKit 같은 가상화 계층이 필요하다.
  • 커널 격리 부족: 모든 컨테이너가 호스트 운영 체제의 커널을 공유하기 때문에 격리 수준이 하이퍼바이저보다 낮다. 만약 커널에 취약점이 있다면, 컨테이너 간의 격리도 위협받을 수 있다.

 


 

도커

도커는 컨테이너 가상화를 더 편리하게 사용할 수 있게 돕는 소프트웨어이다. 도커 컨테이너 엔진을 사용한다.

 

컨테이너

프로세스가 실행되는 공간을 격리한다. 두 개의 프로세스가 실행 중이면, 그 공간을 격리해서 하나의 운영 체제에 하나의 프로세스만 실행되는 것처럼 만든다. 그 공간을 컨테이너라고 한다. 운영 체제의 윗단만을 격리하여 사용하기 때문에 가볍고 빠르다.

 

컨테이너 가상화의 가장 큰 특징은 커널 공유이다. 모든 컨테이너들이 하나의 커널을 공유한다. 하이퍼바이저라는 중간 다리가 없어졌으니 더 효율적이다. 

 

 


✔ 컨테이너 VS 하이퍼바이저

 

 

오버헤드

컨테이너 < 하이퍼바이저

오버헤드가 적은 것은 하드웨어 리소스 요청이 더 효율적으로 이루어진다는 뜻이다.

 


 

부팅 속도

컨테이너 <<< 하이퍼바이저

컨테이너는 애플리케이션만 딸깍, 하이퍼바이저는 운영체제까지 재부팅.

 


 

유지 보수

컨테이너 >> 하이퍼바이저

유지 보수에는 여러 항목이 고려되겠지만 하이퍼바이저보다는 컨테이너가 관리가 쉽다고 생각한다. 운영 체제 업데이트나 버전 관리가 필요할 때, 컨테이너는 한 번의 업데이트만으로 모든 컨테이너에 적용할 수 있는데 하이퍼바이저 가상화는 가상 머신마다 업데이트를 해 줘야 하기 때문에 번거로운 면이 있다.

 

반대로 생각해 보면 컨테이너가 공유하는 하나의 커널에 이상이 생겼을 경우 모든 컨테이너들에게 영향이 미친다. 이럴 때는 어떻게 관리하는지 추가로 공부해 봐야겠다.

 


❗ 정리

하이퍼바이저 가상화는 새로운 운영 체제의 가상 머신을 하나 더 만드는 것이고, 컨테이너 가상화는 실행 중인 프로세스 단위로 격리하여 가상화하는 것으로 이해했다. 컨테이너 가상화가 더 작은 단위로 쪼개지므로 관리하기 쉽고 실행 속도도 빠를 수밖에.. 함수도 최대한 작은 기능으로 쪼개서 여러 코드에 재사용할 수 있게 설계하라고 배우는데, 컨테이너 가상화도 비슷하다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Docker · Git' 카테고리의 다른 글

[Docker] 메타 데이터 수정하기, 덮어쓰기  (0) 2024.09.19
[Docker] Docker inspect 명령어 (컨데이너와 이미지 세부 정보 조회)  (0) 2024.09.12
[Docker] 도커 이미지와 컨테이너의 차이  (0) 2024.09.12
[Docker] nginx 컨테이너 실행, 종료하기  (0) 2024.09.12
[Docker] 도커 실습 환경 구축 - iTerm2, Homebrew, Git, Docker Desktop 설치  (0) 2024.09.10
'Docker · Git' 카테고리의 다른 글
  • [Docker] Docker inspect 명령어 (컨데이너와 이미지 세부 정보 조회)
  • [Docker] 도커 이미지와 컨테이너의 차이
  • [Docker] nginx 컨테이너 실행, 종료하기
  • [Docker] 도커 실습 환경 구축 - iTerm2, Homebrew, Git, Docker Desktop 설치
Jaeyeon-Choi
Jaeyeon-Choi
데이터 엔지니어 호소인의 시행착오
    반응형
  • Jaeyeon-Choi
    데엔데엔
    Jaeyeon-Choi
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • Python (6)
      • Data Engineering (20)
        • Airflow (3)
        • Spark (5)
        • Infra (6)
        • ElasticSearch (1)
        • Hive (3)
        • etc (1)
      • Docker · Git (11)
      • Study (5)
        • SQL (5)
      • CS (1)
        • 운영체제 (0)
        • 네트워크 (1)
        • 알고리즘 (0)
        • 데이터베이스 (0)
      • 주간 · 월간 회고 (6)
      • 생각 (1)
        • 기타 (1)
        • 뉴스 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    데이터엔지니어
    주피터노트북
    hive
    파이썬
    nginx
    Spark
    컨테이너
    nbextensions
    하이브
    docker
    SQL
    이미지
    도커
    스파크
    폐쇄망
    Oracle
    Airflow
    엔진엑스
    데이터타입
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Jaeyeon-Choi
[Docker] 하이퍼바이저 가상화와 컨테이너 가상화
상단으로

티스토리툴바