Container (컨테이너) 개념

Junseo·2025년 3월 11일

컨테이너 이전에는 가상 컴퓨터(Virtual Machine, VM)을 통해 환경 재구축, 격리 및 설정을 진행했다.

반면 OS Container(컨테이너)는 내부에서 애플리케이션을 실행하기 위해 필요한 모든 것을 가지고 있는 경량 실행 파일 패키지이다.

Container(컨테이너)는 하나의 운영체제 위에서 실행되는 가벼운 격리 환경이다.
VM(가상 머신)과 달리 전체 운영체제를 별도로 설치하지 않고, 호스트 OS의 자원을 직접적으로 공유하여 효율적으로 애플리케이션을 격리하는 기술이다.

운영체제(OS)는 크게 두 가지 구성 요소로 이루어진다.

  • Kernel(커널)
    - 하드웨어를 직접 관리하는 핵심 소프트웨어
    - CPU, 메모리, 디스크, 네트워크 등 하드웨어를 관리하고 애플리케이션에 자원을 제공

  • User Space(사용자 공간)
    - 애플리케이션 및 시스템 서비스 등이 실행되는 공간
    - 커널 위에서 동작하며 파일 시스템, 라이브러리, 프로그램을 포함한다.


    컨테이너는 이 중 커널을 호스트 OS와 공유한다.

  • 즉, 컨테이너는 별도의 운영체제 커널을 설치하거나 실행하지 않고, 호스트 OS의 커널을 사용한다.

격리된 콘텍스트(Context)

  • 애플리케이션을 서로 간섭 없이 독립적으로 실행할 수 있게 해주는 환경
  • 마치 독립된 운영체제 환경처럼 보이지만, 실제로는 커널과 자원을 공유하면서 격리성을 제공

Namespace & Cgroup

  • Namespace : 프로세스들이 각각 자신만의 고유한 자원(Resource)을 가진 것 처럼 보이도록 환경을 구분하는 기술 (프로세스, 네트워크, 파일 시스템, 사용자 정보 등)
  • Cgroup : 각 컨테이너가 사용하는 리소스(CPU, 메모리 등)의 양을 제한하거나 관리할 수 있도록 하는 기술

해당 기능들을 통해 컨테이너는 마치 독립적인 OS가 실행되는 것 같은 환경을 매우 가볍게 구현할 수 있다.

Bootstrap
Bootstrap(부트스트랩)은 운영체제를 처음부터 부팅해서 모든 시스템 서비스를 활성화하는 과정을 의미한다.

컨테이너는 별도의 커널이 필요 없으므로, 기존 호스트 운영체제의 커널이 이미 구동 중인 상태에서 애플리케이션만 실행하면 된다.

결과적으로 컨테이너는 매우 빠르고 가볍게 실행할 수 있으며, 운영체제 부팅 과정을 거치지 않고도 애플리케이션을 격리된 환경에서 즉시 실행할 수 있다.

profile
동그라미 네모

0개의 댓글