Search
Duplicate
📒

[Docker Container] 01-2. VM 가상화 vs 컨테이너 가상화

상태
미진행
수업
Docker Container
주제
Docker
4 more properties
참고

존의 가상화 기술과 차이를 통한 컨테이너 이해

NOTE
가상화 ⇒ 서버, 스토리지, 네트워크, 애플리케이션 등을 가상화 하여 리소스를 효율적으로 사용한다!
가상화 기술의 발전, VM → Container로 발전함!
일반 서버 → VM → 컨테이너 방식비교

하이퍼 바이저 기반의 VM 가상화 출현

NOTE
논리적으로 공간을 분할해 VM(Virtual Machine)이라는 독립적인 가상 환경의 서버 이용이 가능하게 되었다.
하드웨어(컴퓨터, 호스트) -> 하이퍼바이저 -> 가상머신(게스트) -> 게스트OS
하이퍼바이저
컴퓨터(물리적 머신) 1대에 다수의 운영체제를 동시에 실행할 수 있도록 해주는 소프트웨어
하이퍼바이저가 실행되는 하드웨어(컴퓨터)를 호스트(host), 가상머신(VM)을 게스트(guest)라고 하며, 가상머신에 설치된 운영체제를 게스트OS라고 부른다.
VM 가상화는 실제 호스트 운영체제와 같이 별도의 GuestOS를 두고 원하는 애플리케이션을 설치하는 하드웨어 수준의 가상화를 구현한다.
VM을 실행시켜야하고, 게스트OS를 부팅해야해서 굉장히 무겁고, 복잡하다

컨테이너 기반의 도커 출현

NOTE
격리된 환경 내에 어플리케이션을 배치한다는 점에 발전해 도커가 등장하게 되었다.
컨테이너 방식은 하이퍼바이저가 없음
동작 방식은 비슷하지만, 컨테이너는 하이퍼바이저와 게스트OS가 필요하지 않다.
컨테이너호스트 OS의 리소스를 논리적으로 분리시켜 여러 개의 컨테이너가 공유하여 사용한다. (오버헤드가 적기때문에 가볍고, 고속으로 동작함)
컨테이너 가상화는 VM 가상화에 비해 경량이면서, 호스트의 운영체제의 커널을 공유하는 운영체제(OS) 수준의 가상화를 구현한다.

도커와 VM의 차이점

컨테이너 사용시, 하드웨어 에뮬레이션 없이 리눅스 커널을 공유해서 바로 프로세스를 실행
컨테이너 사용시, 가상화보다 자원소모가 적고, 실행준비 시간이 짧다.

컨테이너화 기술

NOTE
LXS(LinuxX Container)를 이용한 컨테이너화로 시작해서 지속된 컨테이너 엔진의 발전으로 Docker는 containerd, runC를 이용하는 방식으로 진화
컨테이너화 기술은 계속해서 발전해왔다!
지속된 발전으로 인한 컨테이너 엔진의 변경
runC ⇒ 커널 기술의 공유를 통해 컨테이너 생성을 지원
containerd ⇒ 생성된 컨테이너의 라이프 사이클 관리를 지원
dockerd ⇒ 사용자 환경에서의 명령을 전달

컨테이너에 사용되는 커널기능

NOTE
도커는 Linux 커널 기술을 베이스로 작동하며, 이를 바탕으로 격리할 수 있다!
실제 도커정보를 보면, linux를 사용한다고 나옴
OS 수준의 가상화 도구
croup, namespcae등의 커널 기술을 공유하여 컨테이너에 제공

CGroup

CPU 메모리, Network Bandwith 등 프로세스의 그룹을 관리한다.
시스템 리소스 사용량 관리
어떤 어플이 사용량이 너무 많다면 C Group에 넣어 사용을 제한한다.
이 기술을 이용해 하드 디스크, 네트워크, RAM, CPU를 프로세를 동작시키는데 필요한 만큼 격리해 컨테이너로 관리한다.

NameSpace

하나의 시스템에서 프로세스를 격리시킬 수 있는 가상화 기술!
이 기술을 이용해 하드 디스크, 네트워크, RAM, CPU를 프로세를 동작시키는데 필요한 만큼 격리해 컨테이너로 관리한다.