Skip to content

ContainerRuntime

컨테이너를 쉽게 다운로드받거나 공유하고 구동할 수 있게 도와주는 툴

image

컨테이너를 실행하기 위해서는 다음과 같은 세 단계를 거쳐야한다. 즉, 컨테이너 런타임은 이러한 단계들을 실행해주는 기능을 가진다.

런타임은 실제 컨테이너를 실행하는 단계만 수행하는 저수준 컨테이너 런타임(OCI 런타임)과 컨테이너 이미지의 전송 및 관리, 이미지 압축 풀기 등을 실행하는 고수준 컨테이너 런타임으로 나뉜다.

컨테이너를 실행하려면 저수준 및 고수준 컨테이너 런타임이 각각의 역할을 해야한다. 즉, 컨테이너를 실행하려면 두 런타임이 모두 있어야한다.

저수준 컨테이너 런타임(Low-Level Container Runtimes)

컨테이너는 Linux namespace와 cgroup을 사용하여 구현한다.

namespace : 각 컨테이너에 대해 파일 시스템이나 네트워킹과 같은 시스템 리소스를 가상화함 cgroup : 각 컨테이너가 사용할 수 있는 CPU 및 메모리와 같은 리소스 양을 제한하는 역할을 함.

저수준 컨테이너 런타임은 이러한 namespace와 cgroup을 설정한 다음 해당 namespace 및 cgroup 내에서 명령을 실행하는 기능을 가지고 있다.

저수준 컨테이너 런타임은 컨테이너를 실제 실행하는 역할을 하지만 이미지로부터 컨테이너를 실행하려면 이미지와 관련된 API와 같은 기능이 필요하다. 이러한 기능은 고수준 컨테이너 런타임에서 제공된다.

이러한 저수준 컨테이너 런타입이 표준적으로 지켜야 하는 스펙을 OCI 라고 부른다.

고수준 컨테이너 런타임(High-Level Container Runtimes)

일반적으로 고수준 컨테이너 런타임은 원격 애플리케이션이 컨테이너를 논리적으로 실행하고 모니터링 하는데 사용할 수 있는 데몬 및 API를 제공한다. 또한 컨테이너를 실행하기 위해 저수준 런타임 위에 배치된다.

CRI(Container Runtime Interface)

CRI는 쿠버네티스에서 만든 컨테이너 런타임 인터페이스이다.

명확하게 정의된 추상화 계층을 제공함으로써 개발자가 컨테이너 런타임 구축에 집중할 수 있게 한다.