본문 바로가기

Docker & Kubenetes

가상화와 컨테이너

가상화

가상화란 컴퓨터에서 활용하는 리소스를 추상화 하는 것을 의미합니다.

여러 개의 가상 머신을 생성하여 단일 컴퓨팅 자원을 여러 개의 논리적 자원으로 나누어 동작시킬 수 있습니다.

가상화 종류

호스트 가상화

운영체제를 설치한 후 하이퍼바이저를 통해 가상머신을 만들고 각 가상머신 내부에 게스트 운영체제가 설치됩니다. 

하이퍼바이저 : 단일 물리 머신에서 다수의 가상머신을 실행할 때 활용하는 소프트웨어(VMware, 버추얼박스 등)

하이퍼바이저 가상화

호스트 운영체제 없이 부팅 시 가상머신을 선택하여 동작하게 됩니다. 성능이 우수하다는 장점이 있지만 초기 설정이 복잡하고 관리가 어려울 수 있습니다.

컨테이너 가상화

운영체제 위에 컨테이너를 운영하기 위한 도커를 설치한 후 다수의 컨테이너를 통해 애플리케이션을 실행합니다.
컨테이너 가상화는 컨테이너 간 격리가 되기 때문에 다른 애플리케이션에 영향을 미치지 않아 서로 다른 환경에서 애플리케이션을 실행할 수 있습니다.

컨테이너 구성요소

리눅스 커널의 기능을 기반으로 컨테이너를 생성한다

chroot

새로운 가상 root 디렉토리를 지정
프로세스에 대한 파일시스템은 격리하지만 시스템 설정 및 환경은 동일하며
새로 할당된 root 디렉토리 하위로만 접근이 가능함

namespace

컴퓨팅 자원을 분리하는 기술
프로세스 별 리소스 사용을 분리하는 것
다른 namespace에 존재하는 프로세스들은 서로 리소스 관리를 따로 수행한다
프로세스에 대한 환경을 격리하지만 하드웨어 자원에 대한 분리를 수행하지는 않음

cgroup

특정 그룹에게 블럭 IO, CPU, Memory, 파티션을 할당하고 제어하는 것

 

 

 

이미지 출처:

https://www.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8893081462&cate_cd=