runC 컨테이너로 애플리케이션 실행하기

runC 컨테이너로 애플리케이션 실행하기 (Launching Applications Using runC Containers)

이 문서는 YARN에서 runC 컨테이너를 사용해 애플리케이션을 실행하는 방법을 설명합니다. runC는 OCI(Open Container Initiative) 런타임 스펙을 구현하는 경량 컨테이너 런타임 도구입니다.

출처: 문서

본문

소개

runC는 리눅스 시스템에서 컨테이너를 생성하고 실행하는 명령줄 도구입니다. Docker 같은 컨테이너 런타임과 달리 데몬이 없고 가벼우며, OCI 런타임 스펙을 준수합니다. YARN에서 runC를 사용하면 애플리케이션을 runC 기반의 컨테이너로 실행할 수 있습니다.

배경 및 필요성

  • 기존의 Docker 컨테이너 실행 방식은 Docker 데몬을 필요로 합니다.
  • runC를 사용하면 컨테이너 런타임 오버헤드가 낮아지고, 사용자(namespace 사용자) 실행 지원 등 YARN 보안 컨테이너와의 통합이 용이해집니다.
  • 기본 Docker 지원이 비활성화되어 있거나 데몬 없는 경량 실행이 필요할 때 유용합니다.

구성 (Configuration)

YARN에서 runC 기반 컨테이너를 실행하려면 conf/yarn-site.xml에 Docker 컨테이너 런타임과 관련 설정을 구성합니다. runC 실행기는 Docker 컨테이너 런타임의 일부로 제공되며, yarn.nodemanager.runtime.linux.docker-runc 또는 런타임 구현을 runC로 지정하여 사용합니다.

예:

<property>
  <name>yarn.nodemanager.runtime-implementation</name>
  <value>RuncLCE</value>
</property>
<property>
  <name>yarn.nodemanager.runtime.linux.runc-runtime</name>
  <value>runc</value>
</property>
  • yarn.nodemanager.runtime-implementation: 컨테이너 런타임 구현을 지정. runC를 사용하려면 RuncLCE를 설정합니다.
  • yarn.nodemanager.runtime.linux.runc-runtime: 사용할 runC 런타임 실행 파일 이름(기본 runc).

실행

애플리케이션이 runC 기반 컨테이너를 요청하면, NodeManager는 로컬에서 OCI 이미지를 runC 번들로 변환/준비하여 컨테이너를 실행합니다. 기본적으로 로컬 이미지 인벤토리가 사용됩니다.

유의사항

  • runC 기반 컨테이너는 YARN이 DOCKER 컨테이너 유형(LocalResourceType / ContainerRuntime)을 지원하는 맥락에서 사용합니다.
  • 이미지의 소유권과 로컬 캐시 관리는 Docker 컨테이너 런타임 설정(yarn.nodemanager.runtime.linux.docker.*)에 따릅니다.

더 알아보기 (Learn more)