Cloud 스터디 잼 코리아 Kubernetes Intm

2주차 - 01. 컨테이너 소개

ziwookim 2022. 8. 25. 17:36

가상화의 장점

기존 물리 서버 vs 가상화 배포 비교

가상화를 통해 여러 가상 서버와 운영체제를 동일한 물리적 컴퓨터에서 실행할 수 있다.

가상화를 통해 새 서버를 빠르게 배포할 수 있다. (배포 시간 단축)

물리적 자원 낭비를 줄이고, 이미지를 만들어 이동할 수 있게 된다.

하이퍼바이저는 소프트웨어 레이어로서, 기본 하드웨어에서 운영체제의 종속성을 해소하여 여러 가상 머신이 하드웨어 하나를 공유할 수 있도록 한다.

 

가상화의 한계

종속 항목 공유시 한계

애플리케이션의 모든 종속 항목과 운영체제는 여전히 하나의 번들로 묶여 있어, VM을 하이퍼바이저 제품 간 이동하는 것은 쉽지 않으며, VM을 시작할 때마다 OS를 부팅하는 시간이 소요 된다.

단일 VM에서 여러 애플리케이션을 실행하면 종속 항목을 공유하는 애플리케이션이 서로 격리되지 않는 문제가 발생한다. 

-> 이를 해결하기 위한 방법으로는 애플리케이션마다 전용 VM을 실행하는 것이다.

전용 VM의 한계

그렇지만, 대규모 시스템의 경우 수십만개의 애플리케이션마다 전용 VM은 중복적이며, 낭비이다.

 

컨테이너

Container
컨테이너의 개념 - '사용자 공간을 가상화'

종속 항목 문제를 더 효율적으로 해결하려면 애플리케이션과 종속 항목 수준에서 추상화를 구현하면 된다. 

전체 머신 또는 전체 운영 체제가 아니라, 사용자 공간만 가상화 하면 된다.

사용자 공간은 커널 위에 있는 모든 코드이며, 애플리케이션과 종속 항목을 포함한다.

이것이 '컨테이너'를 '만든다.'는 의미이다.

컨테이너는 단일 애플리케이션 코드를 실행하는 격리된 사용자 공간이다.

-> 즉 컨테이너는 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지이다.

 

컨테이너의 장점

  • 운영체제 전체를 실행하지 않으므로, 가볍다.
  • 기본 시스템 위에서 예약하고 패키징하므로 매우 효율적이다.
  • 컨테이너는 애플리케이션을 구성하는 프로세스만 시작 or 중지할 뿐, 전체 VM을 부팅하거나, 각 애플리케이션의 OS를 초기화하지 않기 때문에 아주 빠르게 만들고 종료할 수 있다.
  • 가볍고, 독립적이며 리소스 효율이 높고, 이동성이 우수한 실행 패키지이다.
  • 컨테이너를 사용하면 VM에서 최종 코드를 실행할 때 소프트웨어 종속 항목(애플리케이션 런타임, 시스템 도구 시스템 라이브러리, 기타 설정 등)에 신경 쓰지 않아도 된다.
  • 필요한 모든 종속 항목을 포함하여 코드를 패키징하면 컨테이너를 실행하는 엔진은 런타임에 이 항목을 사용할 수 있도록 한다.
  • 애플리케이션 중심으로 확장성 높은 고성능 애플리케이션을 제공한다.
  • 컨테이너를 사용하면 개발자가 기본 하드웨어와 소프트웨어를 전제로 작업하는 것이 가능해진다. -> 모든 환경에서 동일한 컨테이너가 동일하게 실행된다.
  • 프로덕션 이미지를 기반으로 컨테이너를 점진적으로 변경하고 파일 복사 한 번으로 이를 빠르게 배포할 수 있다.
  • 애플리케이션을 쉽게 빌드할 수 있다.

 

 

메모

하이퍼바이저(Hypervisor): 가상 머신(Virtual Machine, VM)을 생성하고 구동하는 소프트웨어. 널리 쓰이는 하이퍼바이저로는 'KVM'이 있다.