/CO
(Bare Metal Server)
↓
Application
Kernel(OS)
HW → CPU
운영체제에서 실행되는 프로세스를 격리
전가상화든 반가상화든 추가적인 OS를 설치하여 가상화하는 방법은 어쨌든 성능문제가 있으므로 사용된 방식
리눅스에서는 이 방식을 리눅스 컨테이너라고 하고 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거의 손실이 없다고함.
x86 은 i386, i586, i686 의 모든 플랫폼에서 동작
x86_64 는 i386, i586, i686 의 64bit 환경에서 동작
여러 컨테이너가 동일한 시스템에서 실행되고 OS 커널을 다른 컨테이너와 공유 할 수 있으며, 각 컨테이너는 사용자 공간에서 격리 된 프로세스로 실행
컨테이너는 VM보다 적은 공간을 차지하고 더 많은 애플리케이션을 처리 할 수 있으며, 더 적은 수의 가상머신들과 운영 체제들을 다룸
OS 없음, Application만 포함
⇒ 오픈소스의 조합, 커널 버전이 다름
컨테이너에 여러 어플리케이션을 올리는건 컨테이너를 사용하는 의미가 없다...
가상머신은 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식
하나의 서버를 여러 서버로 바꾸는 물리적인 하드웨어의 추상
여러가지 OS를 가상화 할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용할 수 없다.
최대한 HW를 많이 쓰고 논리적으로 분리를 시키는것이 목적
OS가 꼭 필요
Hypervisor
VM을 생성하고 구동하는 SW
하이퍼바이저를 통해 하나의 머신에서 여러 VM을 실행할 수 있다.
CGroup
Control Group
프로세스들의 자원의 사용(CPU, 메모리, 디스크 입출력, 네트워크 등)을 제한하고 격리시키는 리눅스 커널 기능
리눅스 시스템에서 컨테이너를 이용하여 격리 구조를 만드는 기법은, 격리를 담당하는 Linux Namespace와 리소스를 제어하는 cgroup을 사용하여 격리된 컨테이너 환경을 제공한다.
Namespace
Layered File System