하이퍼바이저 가상화 방식 vs 컨테이너 가상화 방식
1. 하이퍼바이저 가상화 : 하이퍼바이저라는 소프트웨어가 격릭된 공간을 만들어 주었음
2. 컨테이너 가상화 : LXC 기술을 사용하여 호스트 OS 커널의 자체 기능만을 사용하여 격리된 공간을 만듦
주요 단어
- LXC : 리눅스 커널의 Namespace, Cgroups라는 기능을 활용하여 컨테이너 가상화를 제공
- Namespace : 프로세스, 하드드라이브, 네트워크, 사용자, 호스트 네임 처럼 리소스를 나누는 기준의 역할 수행
- Cgroups : 프로세스가 사용하는 메모리, CPU, 하드디스크, 네트워크 밴스위스처럼 리소스의 사용량을 배분하는 기술
- 컨테이너 : LXC 기술을 사용하여 만들어진 각각의 격리된 공간
-> 즉, 컨테이너 가상화란 하이퍼바이저 없이 커널의 자체 기술을 활용한 가상화를 뜻한다.
그렇기 때문에 모든 컨테이너는 Host OS의 커널을 공유해서 사용한다.(컨테이너 가상화의 가장 중요한 특징)

하이퍼바이저 가상화 방식보다 속도가 빠른 컨테이너 가상화 방식

- 하이퍼바이저 가상화는 Host OS와 Guest OS의 커널이 독립적으로 존재하고,
하이퍼바이저라는 소프트웨어가 독립된 커널 간의 통신을 지원한다.
(Host OS와 Guets OS가 다르면 하드웨어에 접근하는 System call 함수가 일치하지 않기 때문에
Guest OS에서 요청한 System call을 Host OS에서 이해하지 못한다.
여기서 하이퍼바이저가 중간에 위치해 번역해주면서 서로 다른 두 OS 사이에도 System call이 가능하도록 하였음)
- 하지만 Guest OS에서 요청하는 각각의 System call들이 하이퍼바이저의 통역을 거쳐가기 떄문에,
요청이 거쳐가는 단계가 늘어나 오버헤드가 발생한다.
- 이에 반해 컨테이너는 Host OS의 커널을 그대로 사용하기 때문에, 중간 단계가 없어 하이퍼바이저 방식보다
상대적으로 오버헤드가 적다.
- 따라서 컨테이너 가상화는 하이퍼바이저 가상화보다 훨씬 더 부팅 속도가 빠르다.
- 다만 커널을 독립적으로 가지고 있는 가상 머신이 보안면에서는 더 뛰어나다.
- 또한 컨테이너는 Host OS의 커널을 공유하기 때문에, 컨테이너에서 호스트 OS와 다른 종류의 OS는 실행할 수가 없다.
- 커널이 자체적으로 제공하는 가상화 기술은 사용자가 직접 컨트롤하기 어렵다. -> 때문에 도커 사용
하이퍼바이저 방식 vs 도커
- 하이퍼바이저 가상화에서 격리된 공간을 만드는 소프트웨어가 하이버파이저라는 소프트웨어
- 컨테이너 가상화에서 격리를 수행하는 주체는 도커 소프트웨어가 아닌 커널 자체
- 도커는 이 컨테이너 가상화 기술을 활용할 수 있게 도와주는 보조 도구
[이 블로그에 정리된 Docker 관련 자료는 인프런 데브위키님의 강의 내용을 바탕으로 작성되었습니다.]
'Docker > SECTION_1 가상화기술' 카테고리의 다른 글
도커(DOCKER) (0) | 2024.07.13 |
---|---|
가상화기술과 하이퍼바이저 가상화 (0) | 2024.07.13 |
하이퍼바이저 가상화 방식 vs 컨테이너 가상화 방식
1. 하이퍼바이저 가상화 : 하이퍼바이저라는 소프트웨어가 격릭된 공간을 만들어 주었음
2. 컨테이너 가상화 : LXC 기술을 사용하여 호스트 OS 커널의 자체 기능만을 사용하여 격리된 공간을 만듦
주요 단어
- LXC : 리눅스 커널의 Namespace, Cgroups라는 기능을 활용하여 컨테이너 가상화를 제공
- Namespace : 프로세스, 하드드라이브, 네트워크, 사용자, 호스트 네임 처럼 리소스를 나누는 기준의 역할 수행
- Cgroups : 프로세스가 사용하는 메모리, CPU, 하드디스크, 네트워크 밴스위스처럼 리소스의 사용량을 배분하는 기술
- 컨테이너 : LXC 기술을 사용하여 만들어진 각각의 격리된 공간
-> 즉, 컨테이너 가상화란 하이퍼바이저 없이 커널의 자체 기술을 활용한 가상화를 뜻한다.
그렇기 때문에 모든 컨테이너는 Host OS의 커널을 공유해서 사용한다.(컨테이너 가상화의 가장 중요한 특징)

하이퍼바이저 가상화 방식보다 속도가 빠른 컨테이너 가상화 방식

- 하이퍼바이저 가상화는 Host OS와 Guest OS의 커널이 독립적으로 존재하고,
하이퍼바이저라는 소프트웨어가 독립된 커널 간의 통신을 지원한다.
(Host OS와 Guets OS가 다르면 하드웨어에 접근하는 System call 함수가 일치하지 않기 때문에
Guest OS에서 요청한 System call을 Host OS에서 이해하지 못한다.
여기서 하이퍼바이저가 중간에 위치해 번역해주면서 서로 다른 두 OS 사이에도 System call이 가능하도록 하였음)
- 하지만 Guest OS에서 요청하는 각각의 System call들이 하이퍼바이저의 통역을 거쳐가기 떄문에,
요청이 거쳐가는 단계가 늘어나 오버헤드가 발생한다.
- 이에 반해 컨테이너는 Host OS의 커널을 그대로 사용하기 때문에, 중간 단계가 없어 하이퍼바이저 방식보다
상대적으로 오버헤드가 적다.
- 따라서 컨테이너 가상화는 하이퍼바이저 가상화보다 훨씬 더 부팅 속도가 빠르다.
- 다만 커널을 독립적으로 가지고 있는 가상 머신이 보안면에서는 더 뛰어나다.
- 또한 컨테이너는 Host OS의 커널을 공유하기 때문에, 컨테이너에서 호스트 OS와 다른 종류의 OS는 실행할 수가 없다.
- 커널이 자체적으로 제공하는 가상화 기술은 사용자가 직접 컨트롤하기 어렵다. -> 때문에 도커 사용
하이퍼바이저 방식 vs 도커
- 하이퍼바이저 가상화에서 격리된 공간을 만드는 소프트웨어가 하이버파이저라는 소프트웨어
- 컨테이너 가상화에서 격리를 수행하는 주체는 도커 소프트웨어가 아닌 커널 자체
- 도커는 이 컨테이너 가상화 기술을 활용할 수 있게 도와주는 보조 도구
[이 블로그에 정리된 Docker 관련 자료는 인프런 데브위키님의 강의 내용을 바탕으로 작성되었습니다.]
'Docker > SECTION_1 가상화기술' 카테고리의 다른 글
도커(DOCKER) (0) | 2024.07.13 |
---|---|
가상화기술과 하이퍼바이저 가상화 (0) | 2024.07.13 |