컨테이너란
-
Container란 Host OS상에 논리적인 구획(컨테이너)를 만들어, 마치 별도의 서버인 것 처럼 사용할 수 있게 만든 것
-
Host OS는 리소스를 논리적으로 분리시키고, 여러 개의 Container가 공유하여 사용
-
Overhead가 적기 때문에 가볍고 고속으로 작동
- Overhead
-
가상화를 수행하기 위해 필요한 CPU 자원, 디스크 용량, 메모리 사용량 등
서버 가상화 기술
-
컨테이너 기술과 서버 가상화 기술은 비슷하지만 목적이 다름
-
컨테이너 기술은 어플리케이션의 실행 환경을 모음으로써 이식성을 높이고 확장성이 좋은 환경에서 작동하는 것을 지향
-
가상화 기술의 대부분은 서로 다른 환경을 어떻게 효율적으로 에뮬레이트할지를 지향
호스트 서버 가상화
-
하드웨어 상에 베이스가 되는 Host OS를 설치하고, Host OS에 가상화 소프트웨어를 설치한 후, 가상화 소프트웨어 상에서 Guest OS를 작동시키는 기술
-
Overhead가 큼
-
e.g.
-
Oracle VM VirtualBox
-
VMware
-
하이퍼바이저형 서버 가상화
-
하드웨어 상에 가상화를 전문으로 수행하는 소프트웨어인 '하이퍼바이저’를 배치하고, 하드웨어와 가상환경을 제어
-
Host OS 없이 하드웨어를 직접 제어하기 때문에 자원을 효율적으로 사용 가능
-
가상 환경마다 별도의 OS가 작동하므로 가상 환경 시작에 걸리는 Overhead가 큼
-
클라우드의 가상 머신에서도 사용하는 기술
-
e.g.
-
Microsoft Windows Server의 Hyper-V
-
Citrix의 XenServer
-
역사
FreeBSD Jail
-
오픈소스 Unix의 FreeBSD의 기술
-
2000년에 릴리스된 FreeBSD 4.0에 도입
-
영어로 '(감옥 등에) 투옥하다’라는 뜻으로, Jail이라고 부르는 독립된 작은 구획에 가둬넣어 시스템을 분할
주요 특징
-
프로세스의 구획화
-
네트워크 구획화
-
파일 시스템의 구획화
Solaris Containers
-
Oracle의 상용 Unix인 Solaris에서 사용하는 컨테이너 기술
-
2005년에 릴리즈된 Solaris 10에서 추가된 기능
두 가지 기능으로 구성
-
Solaris 존 기능
-
하나의 OS 공간을 가상적으로 분할하여 여러 OS가 작동하고 있는 것처럼 보여주는 소프트웨어 파티셔닝 기능
-
한 대의 물리 서버 안에 최대 8192개의 가상 Solaris 환경 구축 가능
-
베이스가 되는 OS의 영역을 'global zone'
-
구획화된 가상 존을 'non-global zone'
-
Docker의 구조와 비슷
-
-
Solaris 리소스 매니저 기능
-
비 글로벌 존에서 CPU나 메모리와 같은 하드웨어 리소스를 배분하는 리소스 관리 기능
-
Linux Containers(LXC)
-
Linux 상에서 사용하는 컨테이너 환경
-
Linux 커널의 컨테이너 기능을 이용하기 위한 툴이나 API를 제공
-
컨테이너는 namespace와 cgroups라는 리소스 관리 장치를 사용하여 분리된 환경 구축
-
데이터 영역에 대해서는 특정 디렉토리를 루트 디렉토리로 변경하는 chroot를 사용하여 분리 환경 구축
-
Docker는 이전 버전에서는 내부에서 LXC를 사용했었음