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