Iriton's log

05. 가상머신과 컨테이너의 이해 본문

Cloud/Study

05. 가상머신과 컨테이너의 이해

Iriton 2024. 5. 6. 21:55

가상머신

단일 물리적 시스템이 여러 개의 독립적 가상 머신에서 각각의 운영체제를 동시에 실행할 수 있도록 함

장점

  1. VM으로부터 호스트 시스템을 보호, VM 서로 간의 보호
    • 전파 되기 쉬운 바이러스 분석, 안전하지 않은 웹서비스 활용
  2. VM 정지, 일시중단, 실행
    • 다른 곳으로 이동하거나 복사하여 다시 시작
    • 해당 상태로 다시 복원할 수 있는 특정 상태의 스냅샷
  3. VM을 다양한 분야에 활용
  4. 템플릿 생성
    • OS와 애플리케이션을 함께 VM으로 생성하여 템플릿 형태로 제공
  5. 실시간 마이그레이션
    • 실행 중인 VM을 한 호스트에서 다른 호스트로 이동
  6. 클라우드 컴퓨팅
    • VM을 임대해 주고 사용량 및 시간을 기반으로 과금하는 체계로 활용

컨테이너

운영체제 수준에서 운영 환경을 구분하는 가상화 기술

  • 컨테이너 내의 응용프로그램은 자신이 독립된 운영체제에서 구동되고 있다고 인식
  • Linux 환경의 Cgroups라는 개념
    • 프로세스에게 컴퓨터 내에 CPU, 메모리 등의 자원 사용에 대한 사용량 제한을 둘 수 있음.
  • 프로세스 ID의 네임스페이스 기반 격리 가능
  • 네트워크 네임스페이스를 통해 인터페이스 제어, iptables 방화벽 및 라우팅 테이블에 대한 격리
  • 파일 시스템의 마운트 네임 스페이스 정의를 통해 접근 디렉토리의 격리
  • 사용자 네임 스페이스 정의를 통해 사용자 ID를 격리

리눅스 컨테이너

  • Cgroup과 네임스페이스 개념을 기반으로 프로세스와 네트워킹을 독립적으로 운영하는 컨테이너 개념 제시
  • 현재도 리눅스 환경에서의 컨테이너 기술도 활용 중

Docker

  • 리눅스 컨테이너 기술을 기반으로 구현
  • 리눅스 컨테이너 위에 도커를 구동시켜서 사용할 수 있음.
  • 컨테이너 기술의 표준처럼 인식이 되어 있으며 윈도우 버전도 출시되었음

장점

  1. 컨테이너 기술을 지원하는 어느 곳에서나 실행 가능
  2. 컨테이너 기반으로 표준화된 작업 단위 구성 가능
  3. 각 컨테이너가 하나의 자원 할당 및 제한의 대상
  4. 마이크로 서비스 아키텍처 구현의 기반이 되는 기술

 

Docker를 기준으로 한 컨테이너 기술 활용법

  • 컨테이너를 구동하기 위해서는 이미지가 필요함
    • 컨테이너가 갖고 있는 기반이 되는 정보들, 운영체제를 포함한 그 다음에 애플리케이션을 포함한 혹은 이루 데이터를 포함한 기반이 되는 정보를 하나의 템플릿으로 구성해 놓은 것
  • 이미지 생성을 위해서 Dockerfile이 필요하며, 작성된 Dockerfile을 build 명령으로 이미지화 할 수 있고, 특히 기존의 이미지를 활용하여 새로운 이미지 생성 가능
  • 이미지는 Registry에서 pull 명령으로 가져올 수 있고 push 명령으로 Registry에 업로드 가능
  • 이미지는 run 명령을 통해 컨테이너 형태로 구동됨
  • 이미지를 생성하여 구동하게 되면 docker 컨테이너가 되며, 구동 시 발생하는 입출력 정보를 R/W layer에 저장하게 됨

 

가상머신과 컨테이너의 특성 비교

  1. 가상화 대상의 차이
    • 가상머신은 하드웨어를 가상화
    • 컨테이너는 운영체제를 가상화
  2. 성능의 차이
    • 가상머신과 컨테이너 성능 비교 시 산술 연산을 할 때 2배 정도 컨테이너 기술이 빠름
    • 메모리 접근 관련 성능에서는 컨테이너 기술이 3배 정도 빠름
  3. 이미지 용량의 차이
    • 가상머신: 수 기가 바이트
    • 컨테이너: 수십 메가 바이트
  4. 자원의 할당과 사용 관련 차이
    • 가상 머신은 독립적인 네트워크 자원, HDD 자원 생성 가능
    • 컨테이너는 네트워크 HDD 자원 생성 불가능

'Cloud > Study' 카테고리의 다른 글

06. 가상머신의 생성 및 운영 + VMware에 Proxmox 실습하기  (0) 2024.05.14
04. Proxmox VE 기초  (0) 2024.05.06
03. Proxmox VE의 설치  (0) 2024.05.06
02. 가상화 환경의 이해  (0) 2024.05.06
01. 클라우드 컴퓨팅 개요  (0) 2024.05.06
Comments