인프라/도커

컨테이너 런타임 (Container Runtime) 이란 무엇인가? 그리고 runc

Jake Seo 2024. 2. 4. 14:19

컨테이너 런타임이란?

  • 도커에서 직접 커널과 통신하며 실제로 격리된 공간을 만드는 역할을 한다.
  • 호스트 운영체제에서 컨테이너를 실행하고 컨테이너 이미지를 관리함
  • 실행, 일시 중지, 중지와 네임스페이스, cgroup, 네트워크 인터페이스 관리와 같은 저수준 작업을 처리
  • 컨테이너의 수명 주기를 담당
  • 도커는 처음에 LXC 라는 런타임을 사용했지만 나중에 libcontainer 라는 자체 런타임을 개발하고 나중에 runc 로 발전
    • 점진적으로 가볍고 유연하고 안정적이 됨

runc 런타임이란?

  • OCI 스펙에 따라 컨테이너를 생성하고 실행하기 위한 CLI 도구임.
  • Docker 및 기타 컨테이너 플랫폼이 내부적으로 사용하는 런타임이고 컨테이너 실행을 위한 사실상의 표준.
  • 단순성, 이식성, OCI 런타임 사양 준수에 중점을 두고 있음

runc 가 하는 일들

  • 컨테이너 구성
  • 네임스페이스 및 C그룹: PID, 네트워크 IPC 등 네임스페이스와 C그룹을 설정. 네임스페이스는 컨테이너가 자신의 리소스 집합만 볼 수 있도록 격리를 제공하고, C 그룹은 컨테이너가 사용할 수 있는 리소스(CPU, 메모리, I/O 등)를 제한하고 모니터링함
  • 루트 파일 시스템: 루트 파일 시스템을 마운트함. 이 파일시스템은 보통 지정된 프로세스를 실행하는데 필요한 파일과 디렉터리가 포함된 이미지임.
  • 프로세스 실행: 격리된 환경 내에서 지정된 프로세스를 실행.
  • 라이프사이클 관리: 인스턴스 생성, 실행, 일시중지, 재개 등
반응형