가상 머신과 컨테이너

1. 컨테이너

1) 컨테이너란?

무겁고 느린 가상화방식을 해결하기 위해 프로세스를 격리하는 방안이 등장했다.

컨테이너화는 커널 하나에 격리된 여러 개의 사용자 공간 인스턴스가 포함 될 수 있도록 애플리케이션 수준에서 이루어지는 가상화의 일종이다. 이런 인스턴스를 컨테이너라고 부른다.

컨테이너는 애플리케이션 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 구성을 하나의 인스턴스에 패키징하는 기본적인 방법을 제공한다. 컨테이너는 하드웨어에 설치된 커널(운영 체제) 하나를 공유한다.

2) 장점과 단점

2. 가상 머신과 컨테이너

1) 차이

컨테이너 형 가상화 하이퍼바이저 형 가상화
시작 시간 짧다(초) 길다(분)
무게 MB, 애플리케이션 + 런타임 소프트웨어 GB, OS + 애플리케이션 + 런타임 소프트웨어
Guest OS 호스트 OS와 동일한 OS Windows/Linux 등 다양한 선택 가능
이식성 컨테이너 이미지 그대로 사용 가능 대부분 가상 이미지에 대한 변환이 필요
데이터 관리 컨테이너 내부에 있는 데이터는 종료시 소멸되며, 필요에 따라 스토리지를 이용하여 저장 VM 내부 또는 연결된 스토리지에 저장
Guest OS와 관계 Host OS를 커널 수준으로 분리하여 OS를 가상화 형태로 사용, 필요에 따라 호스트와 리소스 공유 가능 Guest OS는 하드웨어(가상)로 인식
성능 컨테이너화된 애플리케이션은 완전한 가상 머신보다 리소스를 더 적게 사용하고 호스트 메모리에 가해지는 부담을 줄일 수 있도록 운영 체제 환경(커널)을 공유한다. 각 가상 머신마다 전용 운영 체제가 있기 때문에 가상 머신에 구축된 애플리케이션을 실행할 때 메모리 사용량이 필요 이상으로 많아져 가상 머신이 호스트에 필요한 리소스를 모두 사용할 수 있다.
유지관리와 업데이트 컨테이너 호스트(컨테이너를 호스트하는 컴퓨터)의 운영 체제만 업데이트하면 됩니다. 따라서 유지관리가 매우 간소화된다. 운영 체제를 업데이트하거나 패치할 경우 기존 컴퓨터를 하나씩 업데이트해야 하고 각 게스트 OS를 개별적으로 패치해야 한다.
작동 방법 1. 컨테이너는 마이크로서비스 또는 애플리케이션과 이를 실행하는데 필요한 모든 것(이미지)이 포함되어있다. 2. 이미지라고 하는 모든 라이브러리와 종속성을 포함하는 코드 기반 파일에 저장된다. 3. 이 이미지는 RPM 패키지 및 구성 파일과 함께 제공되므로 이 파일은 Linux 배포 설치로 간주될 수 있다. 4. 컨테이너는 너무 작기 때문에 일반적으로 수백 개가 서로 느슨하게 결합되어 있으므로 컨테이너 오케스트레이션 플랫폼(ex: 쿠버네티드 , Red Hat OpenShift)을 사용하여 컨테이너를 프로비저닝하고 관리한다. 1. 하이퍼바이저라는 소프트웨어는 리소스가 파티셔닝되어 가상머신(VM)전용으로 할당될 수 있도록 리소스를 물리 머신에서 분리한다. 2. 사용자가 물리 환경의 추가 리소스를 요구하는 VM 명령을 발행하면 하이퍼바이저는 이 요청을 물리 시스템으로 전달하고 변경 사항을 캐싱한다. 3. VM은 물리 서버처럼 작동하므로 애플리케이션 종속성 및 대규모 OS 설치 공간의 단점을 증대한다.

2) 선택 기준

쉽게 이동하는 작은 인스턴스(컨테이너)가 필요한지, 사용자 정의 IT 리소의 반영구적 할당이 필요한지에 따라 달라진다.