컨테이너 가상화

From CS Wiki
Container Virtualization
OS 레벨에서 어플리케이션 실행 환경을 격리함으로써 마치 다른 OS에서 동작하는 것과 같은 가상 실행 환경을 제공하는 기술

가상화의 발전 과정[edit | edit source]

가상화의 발전 과정.png

  • 전통적인 배포 시대
    • 초기 조직은 애플리케이션을 물리 서버에서 실행
    • 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당의 문제 발생
    • 물리 서버 하나에서 여러 애플리케이션을 실행하면, 리소스를 과다 사용하는 인스턴스가 다른 애플리케이션의 성능이 저하 유발
    • 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행하는 것은 리소스가 충분히 활용되지 않으며, 유지 비용 과다
  • 가상화된 배포 시대
    • 단일 물리 서버의 CPU에서 여러 가상 시스템 (VM)을 실행
    • VM간에 애플리케이션을 격리하고 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스 할 수 없으므로, 일정 수준의 보안성을 제공
    • 리소스를 보다 효율적으로 활용할 수 있으며, 쉽게 애플리케이션을 추가하거나 업데이트할 수 있고 하드웨어 비용을 절감할 수 있어 더 나은 확장성 제공
    • 가상화를 통해 일련의 물리 리소스를 폐기 가능한(disposable) 가상 머신으로 구성된 클러스터로 구성 가능
    • 가상 머신은 가상화된 하드웨어 상에서 자체 운영체제를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신
  • 컨테이너 개발 시대
    • 컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제(OS)를 공유하므로 각각의 컨테이너는 보다 가벼움

기존 가상 머신과의 차이[edit | edit source]

가상 머신과 컨테이너.png

가상 머신 컨테이너
  • 하드웨어 레벨 가상화
  • 가상 하드웨어 환경 위에 게스트 OS 설치
  • 구현 기술: 하이퍼바이저
  • VMware, Linux KVM, Xen, QEMU
  • OS 레벨 가상화
  • 컨테이너 엔진으로 어플리케이션 실행 환경 격리
  • 구현 기술: 도커

장단점[edit | edit source]

  • 장점:
    • 속도 빠름(기존 물리 시스템과 거의 유사)
    • 이미지 생성 및 공유가 쉬움
    • 단일 어플리케이션 구동을 위한 최소한의 환경만 구분
  • 단점:
    • 가상머신 방식처럼 다양한 OS를 사용할 수 없음
    • 보안적으로 완전히 격리되지 않음

같이 보기[edit | edit source]

참고 문헌[edit | edit source]