[Docker] 도커의 저수준 런타임과 고수준 런타임

Posted by nkjok
2025. 2. 17. 13:46 낙서장[1]/4. Docker
반응형

Docker의 저수준 런타임과 고수준 런타임

Docker는 애플리케이션을 컨테이너화하여 배포하고 실행하는 데 사용되는 인기 있는 도구입니다. Docker 런타임은 컨테이너를 실제로 실행하고 관리하는 역할을 합니다. Docker 런타임은 저수준 런타임과 고수준 런타임으로 나뉩니다.

저수준 런타임 (Low-Level Runtime)

저수준 런타임은 컨테이너를 직접 실행하고 관리하는 역할을 합니다. 컨테이너가 올바르게 격리되고 필요한 자원에 접근할 수 있도록 합니다. 저수준 런타임의 예로는 runc가 있습니다.

  • runc: runc는 컨테이너를 실제로 실행하는 데 사용되는 저수준 런타임입니다. Docker가 기본적으로 사용하는 컨테이너 런타임으로, 컨테이너의 생성, 시작, 중지 등의 작업을 수행합니다. runc는 Open Container Initiative (OCI) 표준을 따르며, 다른 컨테이너 도구와 호환됩니다. runc는 원래 Docker에서 컨테이너를 실행하기 위해 개발되었으나, 현재는 독립적인 라이브러리로 사용됩니다.

고수준 런타임 (High-Level Runtime)

고수준 런타임은 저수준 런타임 위에서 동작하며, 사용자가 컨테이너를 쉽게 관리하고 조작할 수 있도록 인터페이스를 제공합니다. 고수준 런타임은 저수준 런타임을 호출하여 실제로 컨테이너를 실행하고 관리합니다. 고수준 런타임의 예로는 containerd와 cri-o가 있습니다.

  • containerd: containerd는 Docker에서 사용되는 고수준 컨테이너 런타임으로, 컨테이너의 생성, 관리, 네트워크 설정, 스토리지 조작 등을 담당합니다. containerd는 저수준 런타임인 runc를 사용하여 실제 컨테이너를 실행합니다. Kubernetes와 같은 오케스트레이션 도구와도 잘 호환됩니다.
  • cri-o: cri-o는 Kubernetes용으로 설계된 또 다른 고수준 컨테이너 런타임입니다. 컨테이너를 실행하고 관리하기 위해 runc를 사용하며, Kubernetes와의 통합을 위해 특별히 최적화되어 있습니다.

런타임 계층 구조

이미지를 참고하여 Docker 런타임의 계층 구조를 좀 더 상세하게 설명하겠습니다.

이미지 설명: 이 이미지는 Docker의 런타임 계층 구조를 시각적으로 보여줍니다. 왼쪽은 고수준 컨테이너 런타임, 오른쪽은 Docker 런타임으로 구성되어 있습니다.

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

  1. CLI (Command Line Interface): 사용자가 명령을 입력하는 인터페이스입니다.
  2. High-Level Runtime: 고수준 런타임으로, 저수준 런타임과 상호작용하여 컨테이너를 관리합니다.
  3. Low-Level Runtime: 저수준 런타임으로, 실제로 컨테이너를 실행합니다.
  4. OCI (Open Container Initiative): 컨테이너 표준을 정의하는 기관으로, 컨테이너의 생성 및 관리에 필요한 표준을 제공합니다.
  5. 이미지저장소 (Image Storage): 컨테이너 이미지를 저장하는 저장소입니다.

Docker 런타임 (Docker Runtime)

  1. docker: 사용자가 Docker와 상호작용하는 CLI입니다.
  2. dockerd: Docker 데몬으로, docker 클라이언트로부터 명령을 받아 처리합니다.
  3. docker-containerd: Docker의 고수준 런타임으로, 컨테이너의 생성, 관리, 네트워크 설정, 스토리지 조작 등을 담당합니다.
  4. docker-runC: Docker의 저수준 런타임으로, 실제로 컨테이너를 실행합니다.
  5. OCI (Open Container Initiative): 컨테이너 표준을 정의하는 기관으로, 컨테이너의 생성 및 관리에 필요한 표준을 제공합니다.
  6. 이미지저장소 (Image Storage): 컨테이너 이미지를 저장하는 저장소입니다.

요약

  • 저수준 런타임:
    • 컨테이너를 직접 실행하고 관리
    • 예: runc
  • 고수준 런타임:
    • 저수준 런타임 위에서 동작하며, 사용자 인터페이스 제공
    • 예: containerd, cri-o

Docker는 이러한 저수준 및 고수준 런타임을 통해 컨테이너를 효율적으로 관리하고 실행할 수 있도록 지원합니다. 이를 통해 개발자는 보다 쉽고 효율적으로 컨테이너를 사용할 수 있습니다.

반응형