Documents

컨테이너 개념

아래 책를 참고하여 학습한 내용을 정리/기록한 포스트입니다. 자세한 내용은 책을 참고하시기 바라며, 문제가 있을 경우 연락 부탁드립니다.

  • Asa Shiho, 이영란(옮긴이), 완벽한 IT 인프라 구축을 위한 Docker, 2판, 정보문화사, 2018.

컨테이너란

  • 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이라고 부르는 독립된 작은 구획에 가둬넣어 시스템을 분할

주요 특징

  1. 프로세스의 구획화

  2. 네트워크 구획화

  3. 파일 시스템의 구획화

Solaris Containers

  • Oracle의 상용 Unix인 Solaris에서 사용하는 컨테이너 기술

  • 2005년에 릴리즈된 Solaris 10에서 추가된 기능

두 가지 기능으로 구성

  1. Solaris 존 기능

    • 하나의 OS 공간을 가상적으로 분할하여 여러 OS가 작동하고 있는 것처럼 보여주는 소프트웨어 파티셔닝 기능

    • 한 대의 물리 서버 안에 최대 8192개의 가상 Solaris 환경 구축 가능

    • 베이스가 되는 OS의 영역을 'global zone'

    • 구획화된 가상 존을 'non-global zone'

    • Docker의 구조와 비슷

  2. Solaris 리소스 매니저 기능

    • 비 글로벌 존에서 CPU나 메모리와 같은 하드웨어 리소스를 배분하는 리소스 관리 기능

Linux Containers(LXC)

  • Linux 상에서 사용하는 컨테이너 환경

  • Linux 커널의 컨테이너 기능을 이용하기 위한 툴이나 API를 제공

  • 컨테이너는 namespace와 cgroups라는 리소스 관리 장치를 사용하여 분리된 환경 구축

  • 데이터 영역에 대해서는 특정 디렉토리를 루트 디렉토리로 변경하는 chroot를 사용하여 분리 환경 구축

  • Docker는 이전 버전에서는 내부에서 LXC를 사용했었음